Session 변조 - getSession()
세션 삭제에 대한 예외처리 미흡으로 발생.
세션을 지우면 권한이 없어서 조회가 안되던 데이터를 조회할 수 있는 취약점 발견 시 조치방안
1. getSession(), getSession(true)
- HttpSession이 존재하면 현재 HttpSession을 반환하고 존재하지 않으면 새로 세션 생성
2. getSession(false)
- HttpSession이 존재하면 현재 HttpSession을 반환하고 존재하지 않으면 새로 생성하지 않고 null 반환
3. 사용 예
HttpSession session = request.getSession();
HttpSession session = request.getSession(true);
위는 동일한 결과 리턴
새로 생성된 세션인지 확인 : session.isNew() (새로 생성된 세션이면 true 반환)
getSession(), getSession(true)는 null 체크없이 바로 getAttribute()를 사용해도 무방하지만, getSession(false)는 null을 리턴할수 있기 때문에 null체크를 해야함
Ex1)
HttpSession session = request.getSession(false);
if(session == null) {
throw new HandleException("ERROR");
}
Ex2)
HttpSession session = request.getSession(false);
if (session != null)
User user = (User) session.getAttribute("User");