보안 및 개발/WEB

Session 변조 - getSession()

CH@3M 2021. 3. 5. 10:45

세션 삭제에 대한 예외처리 미흡으로 발생.

세션을 지우면 권한이 없어서 조회가 안되던 데이터를 조회할 수 있는 취약점 발견 시 조치방안

 

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");

 

반응형