6장. 프로그램 내부 구조화 및 접근 방법

 

Like a city whose walls are broken down is a man who lacks self-control.

 Proverbs 25:28 (NIV)
차례
6.1. 보안적인 프로그램에 대해 훌륭한 소프트웨어 엔지니어링 원리를 따르라
6.2. 인터페이스를 안전하게 해라
6.3. 권한을 최소화해라
6.3.1. 허가되는 권한을 최소화해라
6.3.2. 권한이 사용될 수 있는 시간을 최소화해라
6.3.3. 권한이 필요한 시간을 최소화해라
6.3.4. 권한이 허가된 모듈을 최소화해라
6.3.5. 권한을 제한하기 위해 FSUID 사용을 고려해라
6.3.6. 사용할 수 있는 파일을 최소화하기 위해 Chroot 사용을 고려해라
6.3.7. 접근할 수 있는 데이타의 최소화를 고려해라
6.3.8. 사용가능한 자원의 최소화를 고려해라
6.4. Setuid/Setgid 스크립트 생성을 피해라
6.5. 안전하게 설정하고 안전한 디폴트를 사용해라
6.6. 안전하게 초기화값을 적재해라
6.7. 고장 안전
6.8. 경쟁 상태를 피해라
6.8.1. 시퀀싱 (비원자적) 문제
6.8.1.1. 파일시스템에서의 원자적 동작
6.8.1.2. 임시 파일
6.8.2. 로킹
6.8.2.1. 로크로서 파일 사용
6.8.2.2. 로킹에 대한 다른 접근 방법
6.9. 단지 신뢰할 수 있는 체널만 신뢰해라
6.10. 신뢰된 경로를 설정해라
6.11. 내부의 일관성을 검사하는 코드를 사용해라
6.12. 스스로 자원을 제한해라
6.13. 교차 사이트의 악의있는 컨텐트를 예방해라
6.13.1. 문제 설명
6.13.2. 교차 사이트의 악의있는 컨텐트에 대한 해결방안
6.13.2.1. 특별 문자 식별
6.13.2.2. 필터링
6.13.2.3. 인코딩
6.14. 데이타 타입에 주의해라