728x90
반응형
쿠키를 사용하여 로그인 처리
쿠키의 종류
- 영속 쿠키: 만료 날짜를 입력 하면 해달 날짜 까지 유지
- 세션 쿠키: 만료 날짜를 생략하면 브라우저 종료시 까지만 유지
쿠키 생성 과정
- 1. 로그인 시도
- 2. 로그인 성공시 DB 에서 MemberId 로 쿠키를 생성
- 3. 쿠키를 Header 에 포함시켜 response 를 준다.
- 4. 브라우저 쿠키 저장소에 쿠키가 저장된다.
쿠키생성 후 처리과정
1. 저장된 쿠키 조회후 요청시 쿠키를 담아 서버에 요청
2. 해당 정보를 가지고 DB 조회
3. 응답.
쿠키를 이용한 로그인 로직
@PostMapping("/login")
public String login(@Valid @ModelAttribute LoginForm form, BindingResult
bindingResult, HttpServletResponse response) {
Member loginMember = loginService.login(form.getLoginId(), form.getPassword());
log.info("login? {}", loginMember);
if (loginMember == null) {
bindingResult.reject("loginFail", "아이디 또는 비밀번호가 맞지 않습니다.");
return "login/loginForm";
}
// 쿠키 생성 로직
Cookie idCookie = new Cookie("memberId", String.valueOf(loginMember.getId()));
// 응답에 쿠키 추가
response.addCookie(idCookie);
return "redirect:/";
}
로그아웃
@PostMapping("/logout")
public String logout(HttpServletResponse response) {
expireCookie(response, "memberId");
return "redirect:/";
}
private void expireCookie(HttpServletResponse response, String cookieName) {
Cookie cookie = new Cookie(cookieName, null);
// 0 으로 셋팅하여 소멸시킨다.
cookie.setMaxAge(0);
response.addCookie(cookie);
}
쿠키의 보안 문제
- 쿠키 값은 임의로 변경가능 하다
그렇기 때문에 쿠키를 이해하고 알면 사용자의 데이터를 추적할수 있다. - 쿠키의 보관된 정보는 노출이 된다.
- 쿠키를 훔쳐간다면 악의적인 요청도 가능하다
대안
- 쿠키 값을 암호화 하거나 임의값을 넣는다.
- 만료시간을 지정한다.
참고:
https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-mvc-2/lecture/83355?tab=curriculum
728x90
반응형
'Spring > spring mvc 2 스터디' 카테고리의 다른 글
[Spring] Filter (0) | 2022.05.31 |
---|---|
[Spring] 로그인 처리 세션 (0) | 2022.05.25 |
[Spring] Validation: Validator (0) | 2022.02.02 |
[Spring] Validation: 오류코드, 메시지 처리 (0) | 2022.02.01 |
[Spring] Validation: BindingResult (0) | 2022.02.01 |
댓글