민프

[토큰 관리] 토큰은 LocalStorage가 안전할까? Cookie가 더 안전할까? 본문

[보안인증 관련]

[토큰 관리] 토큰은 LocalStorage가 안전할까? Cookie가 더 안전할까?

민프야 2023. 3. 3. 20:16

둘 다 JWT 토큰을 저장하기 위한 옵션으로 사용되게 되는데 결론부터 말하자면 내 생각에 안전한 선택은 LocalStorage가 아니라 Cookie라고 생각한다. 

Local Storage는 웹 브라우저 내부에 키-값 쌍으로 데이터를 저장하는 방식으로, 이 데이터는 서버에 요청을 보내지 않고도 로컬에서 접근할 수 있는데 이는 XSS(Cross-Site Scripting) 공격에 취약하다는 것을 의미한다.

여기에서 XSS 공격은 악의적인 스크립트를 삽입하여 사용자의 인증 정보를 탈취하거나, 사용자의 동의 없이 서비스를 이용하는 등의 악성 행위를 수행하는 공격이다.

반면, 쿠키는 서버에 요청을 보낼 때 자동으로 서버로 전송되기 때문에 XSS 공격에 대한 위험이 줄어들고, 또한 쿠키에는 다양한 옵션을 지정하여 유효기간, 암호화 등의 보안 기능을 강화할 수 있다. 예를 들어, HttpOnly 옵션을 사용하면 JavaScript에서 쿠키에 접근할 수 없으므로 XSS 공격에 대한 대처가 가능하다

그러나 쿠키 역시 CSRF(Cross-Site Request Forgery) 공격에 취약하다..(뭘 쓸까..)

여기에서 CSRF 공격은 인증된 사용자의 권한을 이용하여 악성 요청을 보내는 공격이다.

이를 방지하기 위해서는 쿠키에 대한 SameSite 옵션을 설정하여, 동일한 도메인 내에서만 쿠키를 전송할 수 있도록 제한하는 것이 좋다고한다.

따라서, 쿠키를 사용할 때는 보안 옵션을 적절히 설정하여 XSS와 CSRF 공격에 대비해야한다

 

OWASP community에서도 아래와 같은 조언을 하고 있다.

Do not store session identifiers in local storage as the data is always accessible by JavaScript. Cookies can mitigate this risk using the httpOnly flag.
- OWASP: HTML5 Security Cheat Sheet

'[보안인증 관련]' 카테고리의 다른 글

[KYC] KYC란?  (0) 2023.02.06
Comments