JWT 정리 2 - JWT 사용 시 고려해야 할 사항

JWT 이 보안의 완벽한 해결책은 아닙니다

Payload 정보


JWT 의 payload 정보는 누구나 쉽게 디코딩할 수 있기 때문에 사용자의 아이디나 비밀번호 등 개인 정보를 담아 인코딩한다면 정보가 유출될 우려가 있다.

예방법 - 디코딩된 정보만 봐서는 어떤 사용자이고, 어떤 정보를 담고 있는지 알 수 없도록 해야한다.

 

JWT 유효기간 설정


Access Token 은 탈취의 가능성이 있기 때문에 유효기간을 되도록 짧게 두는 것이 좋다.
(유효기간을 두지 않을 수도 있다!)

 

None Attack


공격자가 Header 에 alg clame 을 none 으로 변조하였을 때, 이 토큰을 유효한 토큰으로 인식하면서 발생하는 문제

{
  "alg": "None",
  "typ": "JWT"
}

 

토큰 하이재킹


https://covenant.tistory.com/201

 

 

공격자에 의해 토큰이 가로채기 당하거나 도난을 당했을 경우, 시스템 접근 권한을 얻기 위해 악용될 수 있다.

 

예방법

  • 공격자가 토큰을 하이재킹할 수 있으므로 JWT 보호를 위해 클라이언트에 전송될 때, 헤더 플래그를 설정해야 한다.
    : Secure, HttpOnly, SameSite, Prefix 와 같은 보안 설정이 필요한다.

 

토큰 유효성 검증을 취소할 수단이 없음


토큰이 만료되기전에 사용자는 토큰 자체를 취소할 수 없게 된다. 즉, 공격을 당했을 때 사용자가 공격자를 차단할 수 없게 된다.

 

예방법

https://code-machina.github.io/2019/09/01/Security-On-JSON-Web-Token.html - 참고

 

JSON 웹 토큰(JWT) 보안

안녕하세요 코마입니다. JSON Web 토큰 보안을 주제로하여 자세히 내용을 설명해 드리겠습니다. 내용이 조금 길수 있으니 마음을 단단히 해주시길 바랍니다. 😺

code-machina.github.io

token 의 블랙리스트를 구현하여 토큰 취소 관리를 합니다.

 

참고사이트


https://covenant.tistory.com/201

 

https://code-machina.github.io/2019/09/01/Security-On-JSON-Web-Token.html

 

JSON 웹 토큰(JWT) 보안

안녕하세요 코마입니다. JSON Web 토큰 보안을 주제로하여 자세히 내용을 설명해 드리겠습니다. 내용이 조금 길수 있으니 마음을 단단히 해주시길 바랍니다. 😺

code-machina.github.io

 

반응형