Chimy's Program
정보처리기사 실기 - 서버프로그램 구현 : 서버 프로그램 구현 본문
정보처리기사 실기 - 서버프로그램 구현 : 서버 프로그램 구현
프레임워크(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("<","<");
result=result.replaceAll(">",">");
result=result.replaceAll("&","&");
result=result.replaceAll("\"",""");
}
return result;
}
'BASE' 카테고리의 다른 글
정보처리기사 실기 - 서버프로그램 구현 : 배치 프로그램 구현 (0) | 2020.07.05 |
---|---|
정보처리기사 실기 - 서버프로그램 구현 : 서버 프로그램 테스트 (0) | 2020.07.05 |
정보처리기사 실기 - 서버프로그램 구현 : 업무 프로세스 확인 (0) | 2020.07.03 |
정보처리기사 실기 - 서버프로그램 구현 : 공통 모듈 테스트 (0) | 2020.07.02 |
정보처리기사 실기 - 서버프로그램 구현 : 공통 모듈 구현 (0) | 2020.07.01 |
Comments