- 사용자에게 전달된 값(Hidden Form 필드, 파라미터)을 재사용할 경우 신뢰해서는 안된다.
- 1차 인증 -> 2차 인증 -> 최종 처리 시, 파라미터를 재사용하지 말자. 하더라도 최종처리는? 서버에서 수행.
- 최종 통제 메커니즘은 반드시 서버에서 수행되어야 한다.
- 자바스크립트, VB 스크립트 등을 사용해 클라이언트 측에서 입력값을 검증하는 것은 쉽게 우회될 수 있으므로 서버에서 최종 점검하는 것이 반드시 필요하다.
- 1차 검증은 클라이언트, 최종 검증은 서버 측에서 할 수 있도록 개발
- 클라이언트에게 중요 정보(ID/PWD) 를 전달하지 않는다.
- 클라이언트에서 실행되는 컴포넌트에 중요정보 하드코딩은 절대 안된다. 쿠키에 중요 정보를 전달할 경우 암호화해서 사용한다.
- 중요 정보 전송 시 POST 메소드 / SSL(HTTPS)을 적용한다.
- GET 메소드 사용 시, URL 상에 정보가 그대로 노출되므로 POST 사용.
- 암호화 통신을 통해 기밀성 보장.
- 중요한 트랜젝션이 일어나는 프로세스에 사용자의 비밀번호를 재확인해 인증한다.
- 사용자 정보 변경 등 중요한 트랜젝션이 발생하는 경우에 사용자 비밀번호를 확인하는 절차를 추가해 불법적인 위장으로 인한 피해를 예방한다.
- 중요정보를 보여주는 페이지는 캐시를 사용하지 못하도록 설정한다.
- 중요 정보를 보여주는 화면에 'no-cache 설정'을 하지 않을 경우, 로그아웃한 이후에도 뒤로가기 버튼을 통해 해당 내용을 볼 수도 있다.
- no-cache 설정: 브라우저나 프록시 서버가 해당 페이지 요청시마다 캐시된 페이지를 사용하지 말고 매번 서버로부터 새롭게 전송받아 사용하도록 알리는 설정이다. 이를 위해 HTML HEAD 부분에 아래 내용 추가한다.
<meta HTTP-EQUIV="Pragma" CONTENT="no-cache">
<meta HTTP-EQUIV="Cache-Control" CONTENT="no-cache>
- 적절한 방법으로 암호화한다.
- 자체 개발한 암호화 알고리즘 사용 지양. 공인된 암호화 알고리즘(AES 등) 사용을 고려해야 한다.
- 암호화 키를 사용하지 않는 알고리즘은 암호화 알고리즘이 아니라, 단순히 인코딩 알고리즘이다. 기밀성 보장 불가
- 암호화키는 소스코드에 하드코딩 되어서는 안되며, 제한된 사람만 접근할 수 있도록 해야한다.
- 각 언어에서 제공하는 보안 수단을 이해 후 사용한다.
'정보보안 > 애플리케이션 보안' 카테고리의 다른 글
[웹 서버 취약점] 웹 서버 보안대책 (0) | 2024.11.17 |
---|---|
[웹 서버 취약점] 기타 웹 서버 취약점 (1) | 2024.11.17 |
[웹 애플리케이션 취약점] 기타 취약점 (0) | 2024.11.17 |
[웹 애플리케이션 취약점] 불충분한 세션 관리 취약점 (0) | 2024.11.17 |
[웹 애플리케이션 취약점] 파일 삽입 취약점 (0) | 2024.11.17 |