[게시판 실습] - 불충분한 인증 (1) 중요페이지 접근 시 추가 인증 불충분
[설 명]
중요정보(개인정보 변경 등) 페이지에 대한 인증 절차가 불충분할 경우 권한이 없는 사용자는 중요정보 페이지에 접근하여 정보를 유출하거나 변조할 수 있으므로 중요정보 페이지에는 추가적인 인증 절차를 구현하여야 한다.
[점검 내용]
중요 페이지 접근 시 추가 인증 요구 여부 점검
[점검 기준]
중요 정보 페이지 접근에 대한 추가 인증을 하지 않는 경우 취약
[대응 방법]
* 중요정보를 표시하는 페이지에서는 본인 인증을 재확인하는 로직을 구현하고, 사용자가 인증 후 이용 가능한 페이지에 접근할 때마다 승인을 얻은 사용자인지 페이지마다 검증 필요
* 접근 통제 정책을 구현하고 있는 코드는 구조화, 모듈화가 되어 있어야 함
* 접근제어가 필요한 모든 페이지에 통제수단(로그인 체크 및 권한 체크)을 구현해야 하며 특히, 하나의 프로세스가 여러 개의 페이지 또는 모듈로 이루어져 있을 때 권한 체크가 누락되는 경우를 방지하기 위해서 공통 모듈을 사용하는 것을 권장
* 인증 과정을 처리하는 부분에 Client Side Script(Javascript, VBScript 등)를 사용하면 사용자가 임의로 수정할 수 있으므로 Server Side Script(PHP, JSP, ASP 등)를 통하여 인증 및 필터링 과정을 수행
[진단 과정]
1) 'hacker' 아이디로 로그인 후 마이페이지로 이동합니다.
2) 마이페이지 이동 시 별도의 추가 인증 절차 없이 조회가 가능합니다. (취약성을 나타나기 위하여 패스워드는 일부로 노출) 또한 패스워드 변경버튼 클릭시 패스워드 변경 페이지로 이동하며 현재 패스워드 입력 없이 변경이 가능함을 확인하였습니다.
3) 마이페이지 접속 시 1차적으로 패스워드 인증 로직을 구현하고 2차적으로 패스워드 변경 시 현재 패스워드를 입력하도록 변경하겠습니다.
4) 먼저 마이페이지 이동 시 패스워드를 입력하는 검증 로직을 추가하였습니다.
5) 1차 패스워드 검증 로직을 통과하면 마이페이지로 접속이 가능하며 마이페이지 접속 후 패스워드 변경 시 기존과는 다르게 현재 비밀번호 입력 칸을 추가하였습니다.