어두운 지도를 조금씩 밝혀나가는 데에서 즐거움을 느낀다면
: 소프트웨어 실행 중 발생 가능한 오류들을 사전에 정의하여 문제를 예방하는 보안 점검 항목
1. 오류 메시지를 통한 정보 노출
=> 오류 발생 시 가능한 한 내부에서 처리하거나, 메시지에 최소한의 정보 또는 사전에 준비된 메시지가 출력되도록 하여 방지
2. 오류 상황 대응 부재
=> 오류 발생 가능 부분에 예외 처리 구문을 작성하고, 제어문을 활용하여 오류가 악용되지 않도록 코딩하여 방지
3. 부적절한 예외 처리
=> 모든 함수의 반환 값이 의도대로 출력되는지 확인하고, 세분화된 예외 처리를 수행하여 방지
: 소프트웨어 구현 단계에서 개발자들이 실수하기 쉬운 오류를 예방하기 위한 보안 점검 항목
1. 널 포인터 역참조
=> 널이 될 가능성이 있는 포인터를 이용하기 전에 널 값인지 검사하여 방지
※ 스택 가드 (Stack Guard)
: 주소가 저장되는 스택에서 발생하는 보안 약점을 막기 위한 기술
2. 부적절한 자원 해제
=> 코드 내에 자원 반환 코드가 누락되었는지 확인하고, 오류 발싱 시에도 예외처리에 관계 없이 자원이 반환되도록 구현하여 방지
3. 해제된 자원 사용
=> 반환된 메모리에 접근할 수 없도록 주소를 저장하는 포인터를 초기화하여 방지
4. 초기화되지 않은 변수 사용
=> 변수 선언 시 할당된 메모리를 초기화하여 방지
: 정보 은닉이 필요한 중요 데이터와 기능을 불충분하게 캡슐화하거나 잘못 사용하여 발생 가능한 문제를 예방하기 위한 보안 점검 항목
1. 잘못된 세션에 의한 정보 노출
=> 멤버 변수보다 지역 변수를 활용하여 변수의 범위를 제한함으로써 방지
2. 제거되지 않고 남은 디버그 코드
=> 소프트웨어 배포 전에 코드 검사를 통해 남은 디버그 코드를 삭제하여 방지
3. 시스템 데이터 정보 노출
=> 시스템 메시지를 통해 노출되는 메시지는 최소한의 정보만 제공하도록 하여 방지
4. Public 메소드가 Private 배열 반환
=> Private 배열을 별도의 메소드를 통해 조작하거나, 해당 배열의 복제본으로 반환받은 후 값을 전달하는 방식으로 방지
5. Private 배열에 Public 데이터가 할당됨
=> Public으로 선언한 데이터를 Private 배열에 저장할 때는 레퍼런스가 아닌 값을 저장하여 방지
: 소프트웨어 구현 단계에서 API를 잘못 사용하거나 보안에 취약한 API를 사용하지 않도록 하기 위한 보안 점검 활동
1. DNS Lookup에 의존한 보안 결정
=> DNS 검색을 통해 도메인 이름이 아닌 IP주소를 직접 입력하여 접근함으로써 방지
2. 취약한 API 사용
=> 보안 문제로 금지된 함수는 안전한 함수로 대체하고, API 매뉴얼을 참고하여 보안이 보장되는 인터페이스를 사용하여 방지
: 중요한 정보를 보호하기 위해 평문을 암호화된 문장으로 만드는 절차나 방법
암호화 방식의 분류
: 임의의 길이를 가진 입력 데이터나 메시지를 고정된 길이의 해시 값으로 변환하는 것
: 동일한 키를 이용해 데이터를 암호화하고 복호화하는 방식
- 개인키 암호화 방식의 장단점
: 데이터를 암호화 할 때는 공개키(Public Key)를, 복호화할 때는 비밀키(Private Key)를 사용하는 방식
※ 솔트
: 동일한 패스워드에 같은 암호화 방식을 적용하면 같은 암호문이 나오는 단점을 보완하고자 암호화 전에 원문에 덧붙이는 무작위의 값
5. 정보 시스템 구축 관리 - 소프트웨어 개발 보안 구축(에러 처리~암호 알고리즘)
195. 에러 처리
: 소프트웨어 실행 중 발생 가능한 오류들을 사전에 정의하여 문제를 예방하는 보안 점검 항목
- 에러 처리 미비로 인한 보안 약점
1. 오류 메시지를 통한 정보 노출
=> 오류 발생 시 가능한 한 내부에서 처리하거나, 메시지에 최소한의 정보 또는 사전에 준비된 메시지가 출력되도록 하여 방지
2. 오류 상황 대응 부재
=> 오류 발생 가능 부분에 예외 처리 구문을 작성하고, 제어문을 활용하여 오류가 악용되지 않도록 코딩하여 방지
3. 부적절한 예외 처리
=> 모든 함수의 반환 값이 의도대로 출력되는지 확인하고, 세분화된 예외 처리를 수행하여 방지
196. 코드 오류
: 소프트웨어 구현 단계에서 개발자들이 실수하기 쉬운 오류를 예방하기 위한 보안 점검 항목
- 코드 오류로 인한 보안 약점
1. 널 포인터 역참조
=> 널이 될 가능성이 있는 포인터를 이용하기 전에 널 값인지 검사하여 방지
※ 스택 가드 (Stack Guard)
: 주소가 저장되는 스택에서 발생하는 보안 약점을 막기 위한 기술
2. 부적절한 자원 해제
=> 코드 내에 자원 반환 코드가 누락되었는지 확인하고, 오류 발싱 시에도 예외처리에 관계 없이 자원이 반환되도록 구현하여 방지
3. 해제된 자원 사용
=> 반환된 메모리에 접근할 수 없도록 주소를 저장하는 포인터를 초기화하여 방지
4. 초기화되지 않은 변수 사용
=> 변수 선언 시 할당된 메모리를 초기화하여 방지
197. 캡슐화
: 정보 은닉이 필요한 중요 데이터와 기능을 불충분하게 캡슐화하거나 잘못 사용하여 발생 가능한 문제를 예방하기 위한 보안 점검 항목
- 캡슐화 미비로 인한 보안 약점
1. 잘못된 세션에 의한 정보 노출
=> 멤버 변수보다 지역 변수를 활용하여 변수의 범위를 제한함으로써 방지
2. 제거되지 않고 남은 디버그 코드
=> 소프트웨어 배포 전에 코드 검사를 통해 남은 디버그 코드를 삭제하여 방지
3. 시스템 데이터 정보 노출
=> 시스템 메시지를 통해 노출되는 메시지는 최소한의 정보만 제공하도록 하여 방지
4. Public 메소드가 Private 배열 반환
=> Private 배열을 별도의 메소드를 통해 조작하거나, 해당 배열의 복제본으로 반환받은 후 값을 전달하는 방식으로 방지
5. Private 배열에 Public 데이터가 할당됨
=> Public으로 선언한 데이터를 Private 배열에 저장할 때는 레퍼런스가 아닌 값을 저장하여 방지
198. API 오용
: 소프트웨어 구현 단계에서 API를 잘못 사용하거나 보안에 취약한 API를 사용하지 않도록 하기 위한 보안 점검 활동
- API 오용으로 인한 보안 약점
1. DNS Lookup에 의존한 보안 결정
=> DNS 검색을 통해 도메인 이름이 아닌 IP주소를 직접 입력하여 접근함으로써 방지
2. 취약한 API 사용
=> 보안 문제로 금지된 함수는 안전한 함수로 대체하고, API 매뉴얼을 참고하여 보안이 보장되는 인터페이스를 사용하여 방지
199. 암호 알고리즘
: 중요한 정보를 보호하기 위해 평문을 암호화된 문장으로 만드는 절차나 방법
1) 해시 (Hash)
: 임의의 길이를 가진 입력 데이터나 메시지를 고정된 길이의 해시 값으로 변환하는 것
2) 개인키 암호화 방식 (Private Key Encryption)
: 동일한 키를 이용해 데이터를 암호화하고 복호화하는 방식
- 개인키 암호화 방식의 장단점
3) 공개키 암호화 방식 (Public Key Encryption)
: 데이터를 암호화 할 때는 공개키(Public Key)를, 복호화할 때는 비밀키(Private Key)를 사용하는 방식
- 개인키 암호화 방식의 장단점
4) 양방향 암호화 알고리즘의 종류
※ 솔트
: 동일한 패스워드에 같은 암호화 방식을 적용하면 같은 암호문이 나오는 단점을 보완하고자 암호화 전에 원문에 덧붙이는 무작위의 값
'도서 개발 공부 > 정보 처리 기사 필기' 카테고리의 다른 글