로그인/회원가입 기능 구현

jjuya·2023년 12월 21일
0

프로젝트

목록 보기
3/3
post-thumbnail

spring security를 이용해 로그인/회원가입 을 구현작업 진행

해당 부분 작업을 진행하면서 많은 고민에 빠졌다
jwt는 무엇이고 seccion과 cookei는 무엇이며, security는 어떻게 동작하는것인지
많이 찾아봤지만 역시나 공부가 더 필요해 보인다.

일단 이번 프로젝트에서는
: 로그인 작업 진행시 Jwt토큰을 생성해서 header에 넣어 Client에게 전달할 예정

  1. 사용자가 로그인을 합니다
  2. DB에서 사용자를 확인합니다
  3. jwt토큰 발급받아서 cookie에 저장합니다
  4. 데이터 요청에 cookie에 담긴 토큰과 함께 요청합니다
  5. jwt토큰을 검증합니다
  6. 검증이 완료 되면 데이터를 응답합니다
  7. jwt토큰은 일정 시간이 지나면 만료 됩니다
  8. Cookie가 있는지 jwt토큰이 만료되었는지 확인하고 에러를 보냅니다.
  9. 응답으로 에러를 받고 로그인 페이지로 이동시킵니다.
  10. 재로그인을 해야 합니다.

보안사항 고려

  1. XSS(Cross-Site Scripting)
    XSS는 대상 웹사이트에 악성 스크립트를 주입하여 비정상적인 동작을 실행시키는 공격 유형이다. 공격자는 다른 사용자의 브라우저에서 스크립트가 실행되게 하여 사용자의 쿠키, 세션 등 중요한 정보에 접근할 수 있다.

    해결 방법 : HttpOnly 속성 사용

    HttpOnly 속성은 웹브라우저가 스크립트를 통한 Dom document.cookie 객체 접근을 허용하지 않도록 합니다. 즉 공격자의 XSS를 통한 토큰 탈취를 방지할 수 있습니다.

    cookie.setHttpOnly(true);
  2. CSRF ( Cross Site Request Forgery)
    사용자가 자신의 의지와는 무관하게 공격자가 의도한 행위를 특정 웹사이트에 요청하도록 만드는 공격 유형이다. 공격자는 사용자의 엑세스 토큰을 탈취하지 않고도 사용자로 하여금 엑세스 토큰을 사용하여

    해결 방법 : SameSite 속성 사용

    SameSite 속성은 웹브라우저가 쿠키를 받은 서버가 아닌 다른 서버로 요청을 하는 경우 그 쿠키는 전송하지 못하도록 합니다.

쿠키로 저장하는 방법을 선택 했으니 토큰의 도난을 사전방지를 생각해야한다!
추후 Refresh Token을 생성해서 radis에 저장하는 방식으로 기능 고도화를 해보려한다.

spring security 로그인 회원가입 구현

로그인 / 회원가입 구현 확인하기

profile
Review the Record⭐

0개의 댓글