1. 사용자에게 전달된 값(Hidden Form 필드, 파라미터)을 재사용할 경우 신뢰해서는 안된다.
- 클라이언트에 인증받았다는 정보를 저장했다가 다시 사용하는 것은 쉽게 조작이 가능하므로, 세션 기반으로 서버에서 처리하도록 변경해야 함
- Hidden Form Field : 여러 단계 인증일 때, 이전 인증결과 저장
2. 최종 통제 메커니즘은 반드시 서버에서 수행되어야 한다.
- 클라이언트에서의 입력값 검증은 쉽게 우회가능함. 1차 검증은 클라이언트에서 하고 2차 검증은 서버에서 수행되어야 함
3. 클라이언트에게 중요 정보를 전달하지 않는다.
- 중요 정보를 하드코딩하거나 주석에 중요정보를 기재해선 안됨
- 쿠키로 중요정보를 전달해선 안되고, 부득이한 경우 암호화를 해야 함
4. 중요 정보 전송 POST Method 및 SSL(TLS)를 적용한다.
- GET Method를 사용하면 URL에 정보가 노출되고 서버 엑세스 로그에도 남게 되므로 POST 메소드를 사용해야 하고, SSL(HTTPS)을 사용한 암호화 통신 적용 필요
5. 중요한 트랜잭션(사용자 정보 변경 등) 발생 시 사용자 비밀번호를 재인증한다.
- CSRF 방지 목적
6. 중요 정보를 보여주는 페이지는 캐쉬를 사용하지 않는다
- no cache 설정이 되어 있지 않으면 로그아웃 화면에서 뒤로가기해서 중요 정보 확인 가능
- 해당 페이지 요청 시마다 캐시된 페이지가 아닌 매번 서버로부터 새롭게 전송받아 사용하게끔 no-cache 설정 필요
7. 적절한 방법으로 암호화한다
- 자체 개발한 알고리즘이 아닌 공인된 암호 알고리즘 사용
- 암호화키가 없는 알고리즘은 암호화가 아닌 단순 인코딩(ex. base64)으로, 디코딩을 통해 바로 복원되므로 기밀성 보장 불가
- 암호화키는 소스코드에 하드 코딩 금지
※ 참고
알기사 정보보안기사 실기 교재
'정보보안기사&CISSP관련 > Application Security' 카테고리의 다른 글
[Day 57] SNMP, NMS (0) | 2020.10.06 |
---|---|
[Day 47] Web Log Format (0) | 2020.09.26 |
[Day 45] 파일 업로드 취약점 (0) | 2020.09.24 |
[Day 44] XSS, CSRF (0) | 2020.09.23 |
[Day 43] HTTP 특징 (0) | 2020.09.22 |