[코딩애플] jwt 대충 쓰면 발생하는 일

devdevedddddd·2022년 12월 30일
  • session vs jwt



  • session 방식은 (서버와 입장권 크로스체크)

서버에서 저장되어있는 번호 리스트중 사용자 번호와 매칭이 되는지 확인

  • jwt 방식 (입장권만 까본다)

사용자의 입장권만 확인한다. 서버에 없음
장점 : stateless 하다.
그래서 session 보다 가볍다.

근데 jwt 쓰면 보안이슈 4개정도 크게 발생할 수 있다.

1) alg : none 으로 뚫으려는 시도
2) jwt는 변환(디코딩)이 쉬움
3) 시크릿키 문제 (개발자가 대충지음) > 생성용키/검증용키 2개사용(private/public)
4) jwt 탈취 > 사용정지 처리 가능함

4) 근데 stateless jwt는 그런거 못한다.

그래서 솔루션 3개

1) jwt 유효기간 짧게
2) jwt 훔치기 어렵게 httponly cookie
3) jwt 블랙리스트 (session 방법이랑 비슷해짐)
4) refresh token rotation (refresh toekn 한번)

대부분은 session 방식.

결국은 쿠키 값을 암호화해서 저장, 만료 관리를 하는게 제일 편하고 안전했습니다. 만료시간이 되지 않아도 서버 점검 후 쿠키 파일 지우게 해서 다시 로그인하게 하고 비번도 같이 교체하게끔 하니 관련 이슈가 많이 줄었습니다

profile
노력과 성장을 기록합니다.

0개의 댓글