Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 스파르타코딩클럽 #부트캠프 #IT #백엔드 #머신러닝 #AI #서버 #자동화 #SQL #기본문법 #데이터베이스
- samba #가상머신 #daemon
- 스파르타코딩클럽 #부트캠프 #IT #백엔드 #머신러닝 #딥러닝 #AI #서버 #자동화 #SQL #기본문법 #데이터베이스 #DBMS #Oracle #MongoDB #아키텍쳐 #DB
- 리눅스 #
- 리눅스 #명령어 #내용정리 #mac #특수권한
- virtualbox #vmware #router #nat #pat #네트워크 구성도 #aws #ubuntu #
- haproxy #wordpree #php #linux #가상화 #가상머신 #내용정리
- 프로세스 #CPU #시공유 #커널
- 명령어 #기초 #비밀번호 설정
- 비트 #바이트 #이진수
- mysql #linux #설정 #wordpress #웹사이트 #db 연결 #
- 스파르타코딩클럽 #부트캠프 #IT #백엔드 #머신러닝 #AI #서버 #자동화 #SQL #KDT #기본문법 #데이터베이스 #Computer #Science #CPU #메모리
- 리눅스 #기초 #네트워크 #포트 번호 #역할
- tar #build #배포 #통신포트 #설정방법 #linux #apache
- ubuntu #설정변경 #vmware #vmbox #linux #명령어
- vmware #가상화 #aws 클라우드 #아키텍트 #과정 #가상머신 #컨테이너 #docker
- 리눅스 #명령어 #사용자 계정 정보 관리
- storage #로컬스토리지 #세션스토리지 #백그라운드 서비스
- 리눅스 #사용자계정 #정보관리
- 공간복잡도 #공간자원 #캐시메모리 #SRAM #DRAM #시간복잡도
- 사용자 그룹관리
- selinux #실행모드 변경 #설정방법
- 리눅스 #기초설정 #가이드 #명령어
- 인바운드 #아웃바운드 #방화벽설정
- sasac #aws 클라우드 #아키텍트 과정 #가상화 #vmbox #vmware #esxi #tar #selinux
- 스파르타코딩클럽 #부트캠프 #IT #백엔드 #머신러닝 #딥러닝 #AI #서버 #자동화 #SQL #기본문법 #데이터베이스
- 쓰레드 #쓰레드풀 #프로세스
- 스파르타코딩클럽 #부트캠프 #IT #백엔드 #머신러닝 #AI #서버 #자동화 #SQL #기본문법 #데이터베이스 #웹개발
- 스파르타코딩클럽 #부트캠프 #IT #백엔드 #OSI #ISO #AI #서버 #자동화 #SQL #기본문법 #데이터베이스 #DBMS #Oracle #MongoDB #아키텍쳐 #DB
- oracle vmbox #rocky #linux9 #명령어 #암호화인증 #해시알고리즘
Archives
- Today
- Total
요리사에서 IT개발자로
JWT 어디에 보관해야할까?? (LocalStorage, SessionStorage, Cookie) 본문
추천: HTTP-Only Cookie + CSRF 보호
이 방식은 가장 강력한 보안 옵션을 제공하며, 브라우저에서 JavaScript로 토큰을 탈취할 수 없도록 방지하면서도 자동으로 HTTP 요청에 토큰을 첨부할 수 있습니다.
1. LocalStorage
LocalStorage는 브라우저의 로컬 저장소로, 클라이언트가 데이터를 영구적으로(브라우저가 닫혀도 유지) 저장할 수 있는 공간입니다.
장점:
- 영구적 저장: 브라우저를 닫아도 데이터가 유지됩니다.
- 간편한 사용: JavaScript로 쉽게 데이터를 저장하고 접근할 수 있습니다.
단점:
- XSS(크로스 사이트 스크립팅) 공격에 취약: LocalStorage는 JavaScript에서 쉽게 접근할 수 있기 때문에, XSS 공격이 발생하면 악성 스크립트가 JWT 토큰을 탈취할 수 있습니다.
- 보안 민감 데이터 저장 부적합: 토큰이 노출되면 공격자가 이를 재사용해 인증된 리소스에 접근할 수 있습니다.
언제 사용해야 할까?
- 토큰이 탈취되더라도 심각한 위험이 없거나, 엄격한 보안 요구 사항이 없는 경우.
XSS(Cross-Site Scripting, 크로스 사이트 스크립팅)
공격자가 악성 스크립트를 웹 페이지에 주입하여 다른 사용자의 브라우저에서 실행되도록 하는 보안 취약점입니다.
주로JavaScript와 같은 클라이언트 측 스크립트를 악용하여, 사용자의 세션, 쿠키, 로컬 스토리지에 저장된 데이터 등을 탈취하거나, 피해자의 브라우저에서 악성 행위를 수행할 수 있습니다.
2. SessionStorage
SessionStorage는 LocalStorage와 유사하지만, 세션이 종료되면 데이터가 사라집니다. 브라우저가 닫히면 데이터가 삭제됩니다.
장점:
- 브라우저 세션에 한정: 브라우저가 닫히면 데이터가 삭제되어, 세션 동안만 토큰을 유지합니다.
- 간편한 사용: LocalStorage와 마찬가지로 쉽게 접근할 수 있습니다.
단점:
- XSS 공격에 취약: LocalStorage와 동일하게 XSS 공격에 취약합니다. 공격자가 악성 스크립트를 주입하면 JWT 토큰을 탈취할 수 있습니다.
- 세션 만료: 브라우저를 닫으면 세션이 종료되어 토큰이 삭제됩니다.
언제 사용해야 할까?
- 사용자가 브라우저를 닫으면 인증 상태를 유지할 필요가 없고, 토큰을 세션 동안만 사용할 경우.
3. HTTP-Only Cookie
HTTP-Only Cookie는 JavaScript에서 접근할 수 없고, 오직 서버에서 HTTP 요청 시에만 사용 가능한 쿠키입니다.
장점:
- XSS 공격으로부터 보호: JavaScript에서 쿠키에 직접 접근할 수 없으므로, XSS 공격에 대한 방어가 가능합니다.
- 자동 전송: 브라우저가 자동으로 HTTP 요청에 쿠키를 포함하므로, 별도로 토큰을 요청 헤더에 첨부할 필요가 없습니다.
- 보안 강화 옵션: SameSite, Secure와 같은 추가적인 보안 옵션을 설정할 수 있어, 특정 조건에서만 쿠키가 전송되도록 할 수 있습니다.
단점:
- CSRF(크로스 사이트 요청 위조) 공격에 취약: 쿠키는 모든 도메인에 대해 전송되므로, 다른 도메인에서 위조된 요청을 보낼 수 있습니다. 이를 방지하려면 CSRF 보호 메커니즘이 필요합니다.
- 스토리지 크기 제한: 쿠키는 데이터 저장 용량이 제한적입니다.
언제 사용해야 할까?
- XSS 공격에 대한 우려가 크고, CSRF 보호를 추가할 수 있는 경우.
- 보안이 중요한 애플리케이션에서 토큰을 안전하게 저장해야 할 때.
결론
선택 가이드라인:
- 보안이 최우선일 때: HTTP-Only Cookie가 가장 안전한 선택입니다. 쿠키에 저장된 토큰은 JavaScript에서 접근할 수 없으므로, XSS 공격에 대해 안전합니다. 하지만 CSRF 공격을 방어할 수 있는 추가적인 보호 메커니즘(CSRF 토큰 또는 SameSite 옵션 설정)이 필요합니다.
- 간편하고 영구적인 저장을 원할 때: LocalStorage는 XSS 공격에 취약하지만, 간단하고 브라우저 간 데이터를 쉽게 유지할 수 있는 방법입니다. 만약 XSS 공격 가능성을 줄이는 데 충분한 보안이 적용되어 있다면, LocalStorage를 사용할 수 있습니다.
- 짧은 인증 세션이 필요한 경우: SessionStorage 또는 In-Memory 방식이 적합합니다. 페이지가 닫히면 인증 상태가 사라지므로, 민감한 데이터에 대한 보호가 강화됩니다.
반응형
'TIL' 카테고리의 다른 글
Spring Security h2 페이지 접근 허용하는 방법 (0) | 2024.09.04 |
---|---|
(스파르타 코딩클럽) 면접 예상 질문 Spring MVC패턴 (0) | 2024.08.13 |
(스파르타 코딩클럽) 면접예상질문 Spring AOP란? (0) | 2024.08.13 |
(스파르타 코딩클럽)Vue.js 와 SpringBoot 네이버 소셜로그인 연동하기 (0) | 2024.08.10 |
(스파르타 코딩클럽) 스프링 시큐리티에서 JWT토큰 인증을 어떻게 할까? (0) | 2024.08.03 |