전체 글

· Spring
HttpServletRequest.getSession(default == true) - request.getSession(true) : 세션이 있으면 기존 세션 반환 세션이 없으면 새로운 세션을 생성해서 반환 - request.getSession(false) : 세션이 있으면 기존 세션 반환 : 세션이 없으면 null을 반환 - 기존 세션의 여부는 JSESSIONID로 구분합니다. session저장소에 JSESSIONID와 매칭되는 세션이 존재하는지! * JSESSIONID : 톰캣 컨테이너에서 세션을 유지하기 위해 발급하는 키. 로그인 구현 @Controller @RequiredArgsConstructor public class MemberController { private final MemberSe..
· Spring
세션을 이용한 로그인의 동작원리 1. 인증에 성공했을 때 세션생성(SessionStore에 Map(SessionId, Session)의 형태로 관리 2. 세션에 Map("LOGIN_MEMBER", loginObject)의 형태로 저장 3. response에 sessionId가진 쿠키("JSESSION_ID", sessionId)를 담아 반환 4. 클라이언트는 자원 요청시 쿠키를 가지고 접근 5. 쿠키에 담긴 세션아이디가 서버의 저장소에 존재한다면 세션객체 반환 6. 세션에서 "LOGIN_MEMBER"에 매칭되는 loginObject 반환 -> 이렇게 반환 받은 로그인 객체를 이용하여 인증을 유지합니다. 구현 세션의 이해를 돕기위해 직접 Session을 관리하는 SessionManager클래스를 구현해 로..
· Spring
세션 인증의 동작원리 세션인증은 다음과 같은 방법으로 이루어집니다. 1. 로그인요청 2. 로그인 성공 시 세션발급(사용자 정보 저장) 3. 해당 세션에 매핑되는 세션id를 쿠키에 심어 클라이언트 측에 전달 4. 자원 접근(이 세션id를 가지고 접근한다면 로그인 상태 유지) 즉 로그인 이후에는 세션을 통해 로그인 상태를 유지합니다. 따라서 이 세션id를 공유한다면 같은 사용자임을 보장받을 수 있습니다. 세션 고정 취약점( + 고정 보호) 제가 이번 포스팅에 설명할 내용은 세션고정 취약점입니다. * 세션 고정이란 로그인 시 발급받은 세션 ID값이 로그인 전 후 모두 동일하게 사용되는 것입니다. 이렇게 되면 다음과 같은 문제가 발생할 수 있습니다. 해커는 웹(Target)서버에 접근하여 정상 세션을 발급받는다..
Seung__Yong
기록