본문 바로가기
web/network

JWT 동작 방식 & JWT 보안

by su0a 2024. 3. 13.

1. 서론

앞 포스트에서는 JWT의 정의 및 사용 이유에 대해서 다뤘다.

이번에는 JWT 동작 방식과 JWT를 사용할 때 보안을 높일 수 있는 방법에 대해 정리하고자 한다.

 

2. JWT 동작 방식

사용자 로그인 -> 서버에서 사용자 확인 후 토큰 발급 
사용자가 서버로 데이터 요청 (token 포함) -> 서버는 토큰 확인 후 응답

출처: https://velog.io/

 

3. JWT 보안 높이기

JWT는 stateless이기 때문에 한번 만들어지면 제어가 어렵다. 

임의로 Access Token을 삭제할 수 없기 때문에 만료기간을 설정하지 않으면 탈취될 가능성이 높다.

 

  1) JWT 만료 설정

    Access Token에 유효기간을 지정함으로서 공격의 위험을 줄일 수 있다.

// 좀 더 어려운 방법. Epoch time 기준으로 계산하기 때문에 이렇다
jwt.sign({
	data: "likewise very important", 
    exp: Math.floor(Date.now()/1000) + (60*60) 
    }, 'veryComplicatedSecreyKey') 
// 쉬운 방법 jwt.sign({ 
	data: "too important that it's not dangerous", }, 
    'cuteDog', {expiresIn: '1h'} 
    )

   참고: https://seo-tory.tistory.com/58

 

  2) Cookie 사용

    쿠키를 사용하면 xss(Cross Site Scripting) 공격을 HTTP Only option을 통해 예방할 수 있다.

    (쿠키란? 사용자가 웹사이트 방문했을 때 웹사이트가 사용하는 서버에서 사용자의 로컬 환경에 저장하는 작은 데이터로

                   이전에 방문했는지, 로그인 했는지 등의 정보를 알 수 있다.)

 

  3) HTTPS 사용

    JWT가 탈취될 경우 Access Token, Refresh Token 뿐 아니라 개인정보도 노출될 수 있다. 

    -> HTTPS를 사용하면 서버와 클라이언트 사이의 모든 통신 내용이 암호화 되어 탈취되더라도 정보 노출의 위험을 줄일 수 있다.

    (https 설정: https://support.google.com/domains/answer/7630973?hl=ko)

 

'web > network' 카테고리의 다른 글

JSP & Servlet  (0) 2024.03.18
Web Server, WAS, DB  (0) 2024.03.18
HTTP & 쿠키 & 세션  (0) 2024.03.13
JWT란? & JWT 사용이유  (0) 2024.03.13
content-type  (0) 2024.01.29