Cookie
클라이언트에 저장되는 키와 값이 들어있는 작은 데이터 파일이다.
일반적으로 클라이언트에서 300개까지 Cookie 저장이 가능하고 하나의 도메인당 20개의 Cookie, 하나의 Cookie 값은 4KB까지 저장 가능하다.
Cookie는 Session Cookie, Persistent Cookie 두가지 타입이 있다.
- Session Cookie : 만료 날짜/시간을 지정하지 않아 브라우저 메모리에 저장되고 브라우저가 종료되면 삭제되는 쿠키
- Persistent Cookie : 지속쿠키라고 불리우며, 만료 날짜/시간을 지정시 파일로 저장되어 브라우저가 종료되어도 쿠키는 여전히 남아있다.
장점 :
- 다시 서버에 요청하여 필요한 데이터를 요청할 필요가 줄어든다. ex) 로그인 정보를 유지하여 자동 로그인 되도록
단점 :
- 브라우저당 300개, 도메인당 20개, 하나의 쿠키는 4KB라는 한계가 있다.
- 임의로 수정이 가능하고 쿠키에 사용자 정보가 담기게 된다면 노출될 수 있다. (보안성)
Session
클라이언트로부터 오는 일련의 요청(인증, 정보 등)을 하나의 상태로 보고 그 상태를 일정하게 유지하는 방법
Session은 클라이언트와 Web Container의 상태를 유지하기 위한 정보를 제공하고 Web Server에 저장된다.
브라우저를 닫거나, 서버에서 세션을 삭제했을때만 삭제가 된다.
*세션은 특정 시간이 지나면 자동으로 만료되어 삭제된다.
*서버가 상태(정보)를 저장한다면, 클라이언트는 Session ID를 통해 매핑하여 관리하고 필요할때마다 해당 Session ID를 이용하여 서버에 저장된 데이터를 사용하있다.
장점 :
- 다시 서버에 요청하여 필요한 데이터를 요청할 필요가 줄어든다. ex) 로그인 정보를 유지하여 자동 로그인 되도록
- Web Server의 저장되므로 변경이 쉬운 Cookie보다 비교적 보안성이 좋다.
단점 :
- 서버의 저장될 때, 서버의 자원을 사용하기 때문에 속도 저하 및 오버헤드등 서버에 부하를 줄 수 있다.
- 세션 하이재킹이 될 수 있다,
*Session Hi-Jacking - 세션하이재킹은 시스템간 연결이 활성화된 상태, 즉 로그인 된 상태를 가로채는 것이다.
유효한 SessionID를 훔쳐 별다른 인증 없이 가로챈 세션으로 서버와 통신
Cookie VS Session
1. 저장소
쿠키는 서버가 아닌 브라우저 메모리 또는 파일로 로컬에 저장되는 반면,
세션은 서버의 자원으로 저장된다.
2. 생존 주기
쿠키는 만료 날짜/시간을 지정하게된다면 브라우저를 닫아도 쿠키는 남아있게 된다.
세션도 만료기간을 정할 수 있지만 브라우저를 닫게되면 기간과 상관없이 삭제된다.
3. 보안
쿠키는 브라우저의 개발자도구툴을 사용하여 확인 및 변경이 가능하기에 보안에 취약하다.
세션은 정보는 서버에 저장하고 Session ID만 브라우저에 저장하여 사용되기 때문에 쿠키보단 비교적 보안성이 높다.
사용 이유
보안성이 완전 좋은 것도 아닌데 왜 쓰는가
쿠키와 세션을 사용하는 이유는 서버와 클라이언트의 통신 프로토콜인 HTTP/HTTPS의 비연결성, 무상태성이라는 특징 때문이다.
*비연결성 - 클라이언트와 서버가 한 번 연결을 맺은 후, 클라이언트 요청에 대한 서버가 응답을 마치면 맺었던 연결을 끊는 성질
무상태성 - 서버가 클라이언트의 상태를 저장하지 않는 성질
클라이언트가 서버에게 Request를 보내고 Response를 받을 때 마다 연결이 끊어지게 되어 서버와 클라이언트간 상태 정보가 유지되지 않기 사용하게 되었고
사용하지 않는다면 페이지를 이동할 때마다 계속 로그인을 해야하는 수고가 발생한다.
'기타' 카테고리의 다른 글
커널(Kernel) (0) | 2024.04.30 |
---|---|
LDAP(Lightway Directory Access Protocol) (0) | 2024.04.26 |
Proxy (0) | 2024.04.25 |
OAuth의 Grant Type (0) | 2024.04.25 |
SSO 종류 (0) | 2024.04.25 |