쿠키란?
- 클라이언트단에 저장되는 데이터(사용자의 PC에 저장되는 데이터)
- key와value 형태로 저장됨
- 브라우저별(크롬,사파리,익스플로어)로 따로 저장되고 각각의 사이트별로 저장되는 쿠키가다름
ex) 크롬으로 접속후)
-> naver.com 접속
-> daum.com 접속
=> 같은 브라우저로 접속했다 하더라도 서로다른 사이트이므로 쿠키가 다름
naver.com 생성된 쿠키를 daum.com에서 건드릴수 없음!
사파리로 접속후)
-> naver.com 접속
=> 같은 사이트라 하더라도 접속한 브라우저가 다르므로 쿠키를 공유할수 없음!
ex) 사파리에서는 자동로그인이 되어있는데 크롬에서는 자동로그인이 안되어있음
두가지 유형으로 나누자면)
1.Session Cookie : 브라우저나 탭이 열려있는 동안에만 저장됨(브라우저가 닫히면 쿠키는 영구적으로 삭제됨)
2.Persistent Cookie : 만료일을 가지고 있으며 만료일이 지나면 쿠키가 삭제됨
--> 클라이언트의 PC에 저장되기 때문에 서버단에 저장되는 세션보다는 보안에 취약할수 밖에 없음
백신으로 사용자의 보호가 가능하지만 중요한 계정같은경우 서버에서 관리하는게 훨씬더 안전함
<세션>
-> 서버에 사용자의 데이터를 저장하는 것으로 클라이언트의 쿠키를 서버의 세션과 비교해서 해당 사용자가 맞는지 아닌지 인증하는 방법
주의점)
네이버 로그인시 서버에서 세션ID가 생성되고 세션ID와 일치하는 값을 사용자의 PC에 세션쿠키로 저장해서 로그인이 되어있는동안 해당쿠키로 서비스를 이용할수 있다 물론 로그아웃하거나 브라우저를 종료하면 쿠키와 세션은 사라진다.
이때 해커가 사용자의 쿠키의 세션ID를 얻어와서 해당 세션ID로 네이버 서비스를 이용할수 있게된다
해결방안으로 쿠키값 변조를 탐지하는 필터를 개발하거나 서버에서 세션ID를 만들때 IP를 묶어서 세션을 생성하는 방식으로 보안을 강화해보자
특징)
1. 서버의 세션과 매칭되는 클라이언트단의 쿠키가 존재하지 않는다면 해당세션은 의미가 없음
2. 세션은 서버단에서 처리하므로 세션이 많아질수록 서버의 부담이 커지게됨
세션이 끊기는 경우)
1.클라이언트단에서 쿠키가 소멸될경우
-> 서버의 세션객체가 바로사라지지 않으며 클라이언트단에서 쿠키소멸의 시기를 정확하게 예측이 불가능(비정상적인 종료 - 전기가 나가는경우등..)하므로 서버의 세션객체가 사용이 안되고 타임아웃 시간까지 계속 메모리 공간만 차지할수 있음
2.서버내에서 죽는 경우(임의로 세션을 해제함)
3.서버의 전기가 끊기는 경우
<웹스토리지>
쿠키를 좀더 보완한 방식으로 시간제한과 갯수제한이 없어지고 쿠키의 보통용량(3KB)보다 더큰 5MB용량을 가진다
쿠키는 데이터를 문자열 형식으로만 저장이 가능했는데 웹스토리지는 javaScript 객체 형태로도 저장이 가능하다.
두가지 방식)
1.local 스토리지 : 사용자의 PC에 영구적으로 저장됨(직접지우지 않는 이상 안지워진다..)
2.세션 스토리지 : 세션(프로세스,탭,브라우저) 가 종료될때까지 지속되는 스토리지
[Web][조금 더 자세히]서버와 클라의 연결고리, 상태를 서버에 저장하는 http session, cookie와의 비교
참고 [Web][조금 더 자세히]도대체 왜 이름이 쿠키인걸까?, 상태를 저장하는 http cookie http통신은 상태라는게 없다. 그리고 연결이라는게 없다. 서버입장에서 항상 클라이언트는 새로온 손님일 뿐
kamang-it.tistory.com