Session vs JWT

최현규·2025년 8월 26일

용어 정리

목록 보기
14/15

Session vs JWT

만약 접속한 사이트에 로그인한 사람만 보여주고 싶다면?
1. session
2. token
→ 둘 중 하나 이용하면 구현 가능

  1. 유저가 아이디/비번 입력시 해당 웹사이트의 서버에서 입장권을 발급
  2. 유저가 인증하는 방법으로 입장권 제출 시 서버에서는 애니메이션을 보내줌.

하지만, SessionJWT의 차이점은?

  • Session:입장권에 써 있는 정보들이 별로 없다.
    • ex)발급번호:a123
      → 회원이 입장권 제시할 시 서버가 메모리나 DB에 만들어 둔 세션스토어에서 조회를 하여 문제가 없다면 통과
  • JWT:입장권에 써 있는 정보들이 많다.
    • ex)회원명,이메일,발급일,유효기간 등등
      → Session에서의 조회 방식은 똑같으나 입장권의 정보들이 많아 서버에 부담이 덜간다.

JWT 사용시 심각한 보완 이슈 4가지

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJuYW1lIjoiSm9obiIsIu
ycoO2aqOq4sOqwhCI6MTUxNjIzOTAyMn0._6nr7vDBcUbGAtLV_nVh_Cnr
_uO1GNLJrZvp0DFSUbU    //JWT 문자열 인코딩 
{  //HEADER
  "alg": "HS256",
  "typ": "JWT"
}
{  //PAYLOAD
  "name": "John",
  "유효기간": 1516239022
}
  • 입장권의 정보를 받은 후 짧은 코드로 인코딩한 것이 JWT 입장권입니다.
  • 문제1. alg:none 공격
    • 간혹 어떤 서버들은 입장이 됩니다.
    • 하지만, 최신 라이브러리 상관없다.
  • 문제2. JWT는 변환이 쉽다.
  • 문제3. 시크릿키 문제
    • 키를 매우 길게 사용하거나, 라이브러리 적용 가능한지 확인
  • 문제4. JWT 탈취
    • 훔치기 어렵게 HttpOnly cookie 사용
    • JWT 블랙리스트
    • JWT 유효기간 짧게
    • refresh token rotation(라이브러리 찾아보기)

결론

  • 간단하게 구현할 시 session 방식
  • DB의 회원 입장권 조회나 마이크로 서비스가 많다면 JWT Token 방식

참고:애플코딩

https://www.jwt.io/introduction#how-json-web-tokens-work

0개의 댓글