로그인이 완료되었을 때 세션과 로컬 스토리지에 토큰을 저장하는 방법을 동시에 사용하는 것이 보안을 강화하는 것처럼 보일 수 있지만, 실제로는 그렇지 않습니다.
세션과 로컬 스토리지 모두에 토큰을 저장하는 것은 오히려 공격 범위를 늘리고, 보안 문제를 증가시킬 수 있습니다. 각 저장소의 특성과 함께 사용해야 하는 경우를 이해하는 것이 중요합니다.
세션 기반 인증:
서버 측에서 사용자 상태를 저장하고 관리합니다.
서버에 부담이 더 많이 가지만, 일반적으로 보안이 더 강합니다.
쿠키를 사용하여 세션 ID를 저장하고, 서버에서 사용자를 인증합니다.
토큰 기반 인증 (예: JWT):
상태를 저장하지 않고 클라이언트 측에 토큰을 저장하여 사용합니다.
서버의 부담을 줄이지만, 로컬 스토리지나 쿠키를 사용할 때 XSS (Cross-Site Scripting) 및 CSRF (Cross-Site Request Forgery) 공격에 노출될 수 있습니다.
따라서, 세션과 토큰 기반 인증 중 하나를 선택하여 사용하는 것이 좋습니다. 어떤 방법을 사용할지 결정할 때는, 프로젝트의 요구 사항, 보안 요구 사항, 서버 부하 등을 고려해야 합니다.
만약 토큰 기반 인증을 선택한다면, 토큰을 저장할 때 로컬 스토리지 대신 보안 쿠키를 사용하는 것이 좋습니다. 이렇게 하면 XSS 공격으로부터 토큰을 더 잘 보호할 수 있습니다. 또한, CSRF 공격에 대비하기 위해 SameSite 속성을 설정하거나 CSRF 토큰을 사용해야 합니다
'Spring' 카테고리의 다른 글
Spring Security 관련 CORS에러 (0) | 2023.06.12 |
---|---|
RequestParam과 RequestBody의 차이 (0) | 2023.04.28 |
백엔드에서 멤버인증 방법 (0) | 2023.04.27 |
토큰 저장할 때 로컬스토리지와 쿠키 (0) | 2023.04.27 |
import 패키지가 안될때 ( 파일인식못함) (0) | 2023.04.27 |