티스토리 뷰
728x90
반응형
로컬 스토리지(Local Storage), 쿠키(Cookies), 세션(Session)은 웹 개발에서
클라이언트 측과 서버 측의 데이터를 저장하고 관리하는 중요한 방법이다.
이들의 특징과 사용 사례, 보안 및 성능에 대해 간결히 정리해 보자.
선요약:
특성 | 로컬 스토리지 | 쿠키 | 세션 |
저장 용량 | 각 도메인당 약 5MB | 각 쿠키당 최대 4KB | 서버 설정에 따라 다름 |
수명 | 영구적 | 설정된 만료 시간까지 | 브라우저 종료시 또는 세션 만료시 |
접근 범위 | 동일 도메인 내의 모든 페이지 | 도메인과 경로에 따라 설정 가능 | 서버에서만 접근 가능 |
데이터 타입 | 문자열 | 문자열 | 다양한 데이터 타입 |
보안 | 민감한 데이터 저장에 부적합 | HTTPS, HttpOnly로 보안 | 세션ID를 통한 보안 |
성능 | 서버 통신 불필요, 빠름 | 모든 HTTP 요청에 포함, 네트워크 성능에 영향 | 서버 메모리 또는 DB 사용, 서버 성능에 영향 |
Local Storage
Features
- 저장 용량: 각 도메인당 약 5MB로 쿠키나 세션에 비해 훨씬 많은 데이터를 저장할 수 있다.
- 수명: 사용자가 데이터를 삭제하지 않는 한 브라우저에 영구적으로 저장된다. 물론 세션 종료 후에도 데이터가 유지된다.
- 범위: 도메인 단위로 데이터가 저장된다. 동일한 도메인 내에서만 모든 페이지에서 접근 가능하다.
- 데이터 타입: 문자열 형태로만 저장 가능. 객체나 배열을 저장하려면 JSON.stringify()와 JSON.parse()를 사용해야 한다.
Use Cases
- 테마, 언어 설정 등 사용자의 개인 설정을 저장하는 데 유용하다.
- 웹 앱이 오프라인 상태에서도 작동할 수 있도록 데이터를 저장하는데 사용된다.
- 비교적 큰 데이터를 저장하고 관리하는데 적합하다.
Security & Performance
- 보안: HTTPS를 사용하면 데이터는 암호화되지만 로컬 스토리지 자체는 보안이 취약하다. 민감한 정보 저장에는 적합하지 않다.
- 성능: 서버와 통신이 필요 없기 때문에 기본적으로 매우 빠르다. 그러나 데이터의 양이 늘어나면 속도에 영향을 미칠 수 있다.
Cookies
Features
- 저장 용량: 하나의 쿠키에는 최대 4KB의 데이터를 저장할 수 있다.
- 수명: 명시적으로 설정 가능하며 설정하지 않으면 브라우저 세션이 끝날 때까지 유지된다.
- 범위: 도메인과 경로에 따라 설정할 수 있다. 서브 도메인 간의 쿠키 공유도 가능하다.
- 데이터 타입: 로컬 스토리지와 마찬가지로 문자열 형태로만 저장할 수 있다.
Use Cases
- 세션 관리: 로그인 상태를 유지하거나 사용자를 추적하는 데 사용된다.
- 사용자 설정: 로컬 스토리지와 마찬가지로 기본 설정을 저장할 수 있으나 비교적 적은 데이터만 가능하다.
- HTTP 요청마다 자동으로 서버에 전송되기 때문에, 서버 간 데이터 전송에 유용하다.
Security & Performance
- 보안: HTTPS와 함께 사용하면 쿠키가 암호화되어 전송된다. HttpOnly 속성을 사용하면 JS로도 접근할 수 없어 XSS 공격을 방지할 수 있다. 하지만 CSRF공격에 취약할 가능성이 있다.
- 성능: 모든 HTTP 요청에 쿠키가 자동으로 포함되기 때문에, 많은 양의 쿠키를 사용하면 네트워크 성능에 영향을 줄 수 있다.
Session
Features
- 저장 용량: 서버 측에 저장되기 때문에 용량 제한은 서버의 설정에 따라 다르다.
- 수명: 사용자가 브라우저를 닫거나 세션이 만료되면 삭제된다. 서버에서 세션 타임아웃을 설정할 수도 있다.
- 범위: 저장된 데이터는 서버에서만 접근 가능하다. 클라이언트는 세션 ID를 통해서만 서버에 접근한다.
- 데이터 타입: 다양한 데이터 타입을 저장할 수 있다.
Use Cases
- 인증 및 권한 부여: 사용자의 로그인 상태를 유지하거나 접근 권한을 관리할 수 있다.
- 쇼핑 카트: 쇼핑몰 등에서 사용자의 쇼핑 카트 상태를 유지하는데 사용된다.
- 사용자 데이터 저장: 서버 측에서만 접근할 수 있는 민감한 데이터를 저장한다.
Security & Performance
- 보안: 세션 ID가 쿠키로 저장되기 때문에 HTTPS 사용 시 암호화된다. 세션 고정 공격이나 하이재킹에 취약할 수 있다.
- 성능: 서버 재원을 사용하기 때문에 사용자가 몰리면 서버 성능에 영향을 줄 수 있다.
반응형
'Development > Technical Interview' 카테고리의 다른 글
[면접 준비]N+1 문제 (0) | 2024.08.27 |
---|---|
[면접 준비]SQL에서 UNION/UNION ALL 차이 (0) | 2024.07.31 |
[면접 준비 - Spring]@Service와 @Repository (0) | 2024.06.03 |
[면접 준비 - Spring]@Controller와 @RestController (0) | 2024.06.03 |
[면접 준비 - Java]접근 제어자(Access Modifier) (0) | 2024.06.03 |
[면접 준비 - CS]프로세스 스케줄러 (0) | 2023.05.02 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- spring
- 야경
- Backjoon
- 지지
- 스프링
- 세계여행
- 스트림
- a6000
- 자바
- 알고리즘
- 파이썬
- 동적계획법
- 여행
- 유럽여행
- 세모
- java
- 백준
- 기술면접
- 세계일주
- RX100M5
- 남미
- 면접 준비
- BOJ
- 리스트
- 칼이사
- 중남미
- Algorithm
- 맛집
- 유럽
- Python
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함