쿠키 : 사용자가 특정한 웹 사이트에 방문할 때, 사용자 컴퓨터에 저장하는 기록 파일
- 서버의 자원을 전혀 사용하지 않는다
- 예시) "아이디와 비밀번호를 저장하시겠습니까?"
세션 : 한 명의 사용자(브라우저)의 상태를 유지하는 기술
- 서버에서 가지고 있는 객체 => 특정 사용자(브라우저)의 상태(예를 들어 로그인 상태)를 유지하기 위해 사용된다.
- 서버가 클라이언트에게 고유한 Session ID를 부여하면, 클라이언트는 접속할 때마다 Session ID와 함께 요청을 수행한다. 그리고 서버는 Session ID를 통해 해당 유저가 누구인지 확인한다.
- 예시) 웹 사이트에 한 번 로그인 하면, 다른 페이지로 이동해도 계속 접속 상태가 유지된다.
- 만약 Session ID를 다른 클라이언트에게 탈취당하면, 다른 사람이 자신의 행세를 할 수 있게 된다.
- 그래서 개인정보수정 페이지 같은 경우엔, 패스워드 재입력을 하게 한다.
- 장점
- 클라이언트 브라우저가 가지고 있는 세션 ID 개인정보를 포함하고 있지 않다 => 민감한 데이터를 클라이언트에 직접적으로 보내지 않는다
- 단점
- 악의적인 공격자가 세션 ID를 탈취하여 사용자인 척 위장할 수 있다.
- 웹 서버에서 세션 정보를 기록하고 있어야 하므로, 접속자가 많을 때 서버에 메모리 부하가 존재할 수 있다.
쿠키
|
세션
|
|
저장 위치
|
클라이언트
|
웹 서버
|
소멸 시기
|
쿠키 저장 시 만료기간 설정
(브라우저가 종료돼도, 만료 시점이 지나지 않으면 자동으로 삭제되지 않는다)
|
브라우저 종료 시 만료기간에 상관없이 삭제 (만료기간 지정 가능)
|
저장 타입
|
파일
|
객체
|
속도
|
쿠키 > 세션
|
|
보안
|
쿠키 < 세션
|
|
저장 정보
|
지워져도 되고, 조작되거나 가로채이더라도 큰 지장이 없는 수준의 정보들
|
사용자나 다른 누군가에게 노출되면 안되는 중요한 정보들
|
|
로컬 스토리지 Local Storage
|
쿠키 Cookie
|
are used to store data in a user's browser
|
||
storage size
|
Larger than cookies (usually 5-10 MB per domain depending on the browser)
|
Limited to 4KB per cookie
|
Expiration
|
No expiration date. Data is stored until it is deleted or cleared by the user
|
Can be set with an expiration date. If not set, the cookie will be deleted when the user closes the browser
|
Accessibility
|
Can only be accessed by the domain that created it. Data is not sent to the server with each HTTP request.
|
Can be accessed by the domain that created it and any subdomains of that domain. Cookies are sent to the server with each HTTP request.
|
Security:
|
: More secure than cookies as it is not sent with each HTTP request. However, it can still be accessed by JavaScript code running on the same domain
|
Less secure than localStorage as it is sent with each HTTP request. However, cookies can be encrypted and/or signed to prevent unauthorized access
|
provides a simpler and more consistent API for storing and retrieving data
|
Cookies have more complex API for setting and managing them.
|
|
can be accessed using JavaScript
|
||
a good choice for storing larger amounts of data that needs to persist across multiple sessions or page reloads on the same domain
|
a better choice for storing small amounts of data that need to be shared with the server or accessed by subdomains.
|
'Computer Science' 카테고리의 다른 글
운영체제 Operating System란? (0) | 2023.10.26 |
---|---|
[ 자료구조 ] 실행 컨텍스트 Execution Context & 콜 스택 Call Stack (0) | 2023.10.26 |
File , Blob , Base64 , ArrayBuffer , formData 등 다루기 (0) | 2023.10.26 |
웹 브라우저의 동작 방식 (0) | 2023.10.26 |
[ Algorithm ] 정렬 알고리즘과 시간 복잡도 분석 (0) | 2023.10.24 |