1. 캡슐화의 개요
- 정보 은닉이 필요한 중요 데이터와 기능을 불충분하게 캡슐화하거나 잘못 사용함으로써 발생할 수 있는 문제를 예방하기 위한 보안 점검 항목
- 캡슐화로 인해 발생할 수 있는 보안 약점 : 잘못된 세션에 의한 정보 노출, 제거되지 않고 남은 디버그 코드, 시스템 데이터 정보 노출 등
2. 잘못된 세션에 의한 정보 노출
- 다중 스레드 환경에서 멤버 변수에 정보를 저장할 때 발생하는 보안 약점
- 싱글톤 패턴에서 발생하는 레이스컨디션으로 인해 동기화 오류가 발생하거나, 멤버 변수의 정보가 노출될 수 있음
- 잘못된 세션에 의한 정보 노출 방지 방법 : 멤버 변수보다 지역 변수를 활용하여 변수의 범위를 제한
3. 제거되지 않고 남은 디버그 코드
- 개발 중에 버그 수정이나 결과값 확인을 위해 남겨둔 코드들로 인해 발생하는 보안 약점
- 소프트웨어 제어에 사용되는 중요한 정보가 디버그 코드로 인해 노출될 수 있음
- 디버그 코드에 인증 및 식별 절차를 생략하거나 우회하는 코드가 포함되어 있는 경우 공격자가 이를 악용할 수 있음
- 제거되지 않고 남은 디버그 코드 방지 방법 : 소프트웨어를 배포하기 전에 코드 검사를 통해 남아 있는 디버그 코드를 삭제
4. 시스템 데이터 정보 노출
- 시스템의 내부 정보를 시스템 메시지 등을 통해 외부로 출력하도록 코딩했을 때 발생하는 보안 약점
- 시스템 데이터 정보 노출 방지 방법 : 시스템 메시지를 통해 노출되는 메시지는 최소한의 정보만을 제공
5. Public 메소드로부터 반환된 Private 배열
- 선언된 클래스 내에서만 접근이 가능한 Private 배열을 모든 클래스에서 접근이 가능한 Public 메소드에서 반환할 때 발생하는 보안 약점
- Public 메소드가 Private 배열을 반환하면 배열의 주소가 외부로 공개되어 외부에서 접근할 수 있게 됨
- Public 메소드로부터 반환된 Private 배열을 방지하는 방법 : Private 배열을 별도의 메소드를 통해 조작, 동일한 형태의 복제본으로 반환받은 후 값을 전달
6. Private 배열에 Public 데이터 할당
- Private 배열에 Public으로 선언된 데이터 또는 메소드의 파라미터를 저장할 때 발생하는 보안 약점
- Private 배열에 Public 데이터를 저장하면 Private 배열을 외부에서 접근할 수 있게 됨
- Public으로 선언된 데이터를 Private 배열에 저장할 때, 레퍼런스가 아닌 값을 직접 저장함으로써 방지할 수 있음
7. 접근 지정자 (접근 제어자)
- 프로그래밍 언어에서 특정 개체를 선언할 때 외부로부터의 접근을 제한하기 위해 사용되는 예약어
한정자 | 클래스 내부 | 패키지 내부 | 하위 클래스 | 패키지 외부 |
Public | O | O | O | O |
Protected | O | O | O | X |
Default | O | O | X | X |
Private | O | X | X | X |
'자격증 > 정보처리기사' 카테고리의 다른 글
[정보처리기사 필기] 시스템 보안 구축 - 153. 서비스 공격 유형 (0) | 2025.02.26 |
---|---|
[정보처리기사 필기] 소프트웨어 개발 보안 구축 - 152. 암호 알고리즘 (0) | 2025.02.25 |
[정보처리기사 필기] 소프트웨어 개발 보안 구축 - 150. 코드 오류 (0) | 2025.02.25 |
[정보처리기사 필기] 소프트웨어 개발 보안 구축 - 149. 에러처리 (0) | 2025.02.25 |
[정보처리기사 필기] IT프로젝트 정보시스템 구축 관리 - 141. Secure OS (0) | 2025.02.25 |