Skip to content

세션, 쿠키, 토큰

각 인증 정보의 저장위치를 알아보면 세선은 서버, 쿠키는 클라이언트, 토큰은 서버에 저장된다.

세션은 서버와 연결된 각 클라이언트에 세션 ID를 발급하고, 클라이언트는 발급된 세션 ID를 요청에 담아 보낸다(보통 쿠키).
발급된 세션 ID가 어떤 인증정보를 가지는지 서버에 저장된다.
세션ID가 탈취되면 위험하기에 비교적 안전하지는 않다.
서버로부터 인증정보를 받아 쿠키에 저장하여 매 요청마다 인증 정보를 전달할 수도 있는데, 클라이언트의 쿠키에 정보를 저장하기에는 보안상 취약점이 있다.

쿠키는 자바스크립트로 접근할 수 있어서 보안상 취약하다. Secure 쿠키 속성을 사용하거나 HttpOnly 속성을 활용하여 일부 보안 취약점을 줄일 수 있다.

토큰을 사용한 방식은 토큰을 발급하는 서버로부터 토큰을 받아 매 요청에 토큰을 포함시키는 방식인데, 매우 짧은 유효시간을 가지기에 탈취되어도 비교적 안전하다.
(편의를 위해서 유효시간이 긴 리프래시 토큰을 함께 사용할 수 있다. 토큰 발급 서버를 따로 분리할 수 있는 장점도 있다)