Notice
Recent Posts
Recent Comments
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

Chimy's Program

정보처리기사 실기 - 서버프로그램 구현 : 서버 프로그램 구현 본문

BASE

정보처리기사 실기 - 서버프로그램 구현 : 서버 프로그램 구현

chimy 2020. 7. 4. 07:46

정보처리기사 실기 - 서버프로그램 구현 : 서버 프로그램 구현

 

프레임워크(Framework)

 

소프트웨어 프레임워크 정의 

 

  • 효율적인 정보 시스템 개발을 위한 코드 라이브러리애플리케이션 인터페이스(Application Interface), 설정 정보 등의 집합으로서 재사용이 가능하도록 소프트웨어 구성에 필요한 기본 뼈대를 제공
  • 광의적으로 정보 시스템의 개발  운영을 지원하는 도구  가이드 등을 포함

 

프레임워크의 특징

 

(1) 모듈화(modularity) 

 

      • 인터페이스에 의한 캡슐화를 통해서 모듈화 강화
      • 설계와 구현의 변경에 따르는 영향을 극소화하여 소프트웨어  품질을 향상시킨다

 

(2) ⁠재사용성(reusability) 

 

      • ⁠프레임워크가 제공하는 인터페이스는 반복적으로 사용할  있는 컴포넌트를 정의할  있게 하여 재사용성을 높임
      • 프레임워크 컴포넌트를 재사용으로 소프트웨어의 품질을 향상시키고 개발자의 생산성 증가

 

⁠(3) 확장성(extensibility)

 

      • 다형성(polymorphism) 통해 애플리케이션이 프레임 워크의 인터페이스 확장 가능
      • 프레임워크 확장성은 애플리케이션 서비스와 특성을 변경하고 프레임워크를 애플리케이션의 가변성으로부터 분리함으로써 재사용성의 이점 획득

 

(4) ⁠제어의 역흐름(inversion of control) 

 

      • ⁠프레임워크 코드가 전체 애플리케이션의 처리 흐름을 제어하여 특정한 이벤트가 발생할  다형성(Polymorphism) 통해 애플리케이션이 확장한 메소드를 호출함으로써 제어가 프레임워크로부터 애플리케이션으로 거꾸로 흐르게 

 

 데이터 저장 계층 또는 영속 계층(Persistence Layer)

 

  • DAO/DTO/VO 영속 계층(Persistence Layer)에서 사용되는 특정 패턴을 통해 구현되는 Java Bean

(1) DAO(Data Access Object) 

 

  • ⁠특정 타입의 데이터베이스나 다른 지속적인 메커니즘(Persistence Mechanism) 추상 인터페이스를 제공하는 객체
  • 애플리케이션 호출을 데이터 저장 부분(Persistence Layer) 매핑함으로써 DAO 데이터베이스의 세부 내용을 노출하지 않고 특정 데이터 조작 기능 제공

 

(2) ⁠DTO(Data Transfer Object) 

 

  • 프로세스 사이에서 데이터를 전송하는 객체
  • 많은 프로세스 간의 커뮤니케이션이 원격 인터페이스(ex.  서비스) 의해 이루어지기 때문에 전송될 데이터를 모으는 DTO 이용해서  번만 호출
  • DAO와의 차이 : 스스로의 데이터를 저장  회수하는 기능을 제외하고 아무 기능도 없음 DAO와의 차이

 

(3) ⁠VO(Value Object) 

 

  • 간단한 독립체(Entity) 의미하는 작은 객체
  • 가변 클래스인 DTO 다르게 getter기능만 제공하는 불변 클래스를 만들어서 사용

 

 소프트웨어(SW) 개발 보안

 

  • SW 개발 과정에서 개발자의 실수논리적 오류 등으로 인해 SW 내포될  있는 보안 취약점(vulnerability) 원인 보안 취약점(weakness) 최소화사이버 보안 위협에 대응할  있는 안전한 SW 개발하기 위한 일련의 보안 활동

 

(1) 소프트웨어 개발 보안 가이드의 구성

 

  • Java 시큐어코딩 가이드에 의한 보안 취약성을 제거하는 코드 구현
  • 서버 프로그램은 다양한 보안 취약점에 존재하기 때문에 소프트웨어 개발 보안 가이드에 의해 알려진 보안 취약점을 대응

 

※ Java 시큐어 코딩 가이드

유형 설명
입력 데이터 검증 및 표현 프로그램 입력값에 대한 검증 누락 또는 부적절한 검증,
데이터의 잘못된 형식 지정으로 인해 발생할 수 있는 보안약점
※ SQL 삽입, 자원 삽입, 크로스 사아티 스크립트 등 26개
보안 기능 보안 기능(인증, 접근 제어, 기밀성, 암호화, 권한 권리)을 적절하지 않게 구현 시 발생할 수 있는 보안 약점
※ 부적절한 인가, 중요 정보 평문 저장(또는 전송) 등 24개
시간 및 상태 동시 또는 거의 동시 수행을 지원하는 병렬 시스템 하나 이상의 프로세스가 동작하는 환경에서 시간 및 상태를 부적절하게 관리하여 발생할 수 있는 보안 약점
※ 경쟁 조건, 제어문을 사용하지 않는 재귀 함수 등 7개
에러 처리 에러를 처리하지 않거나 불충분하게 처리하여 에러 정보에 중요 정보(시스템 등)가 포함될 때 발생할 수 있는 보안 약점
※ 취약한 패스워드 요구 조건, 메시지를 통한 정보 노출 등 4개
코드 오류 타입 변환 오류, 자원(메모리)의 부적절한 반환 등과 같이 개발자가 범할 수 있는 코딩 오류로 인해 유발되는 보안 약점
※ 널 포인터 역참조, 부적절한 자원 해제 등 7개
캡슐화 중요한 데이터 또는 기능성을 불충분하게 캡슐화하였을 때 인가되지 않는 사용자에게 데이터 누출이 가능해지는 보안 약점
※ 제거되지 않고 남은 디버그 코드, 시스템 데이터 정보 노출 등 8개
API 오용 의도된 사용에 반하는 방법으로 API 사용, 보안에 취약한 API를 사용하여 발생할 수 있는 보안 약점
※ DNS Lookup에 의존한 보안 결정, 널 매개 변수 미조사 등 7개

 

※ 크로스 사이트 스크립트에 대응하는 안전한 코드 예시

/**
 * 크로스 사이트 스크립트 보안
 * @param param
 * @return
 */
private String replaceParameter(String param){
	String result=param;
	if(param!=null){
		result=result.replaceAll("<","&lt;");
		result=result.replaceAll(">","&gt;");
		result=result.replaceAll("&","&amp;");
		result=result.replaceAll("\"","&quot;");
	}
	return result;
}
Comments