쿠키와 세션
쿠키와 세션
HTTP는 항상 연결되어있는것이 아닌 필요할 때 마다 요청을 보내고 응답을 받는 비연결성이라는 특징을 가지고 있다. 로그인을 한 뒤, 다른 도메인으로 이동했다 기존 사이트로 돌아오면 로그인 정보가 유지되지 않는다는 것.
* 쿠키
- 사용자의 컴퓨터에 저장하는 작은 기록 파일. 클라이언트에 저장해 클라이언트 메모리를 사용한다.
- 클라이언트 PC에 저장했다가 필요시 정보를 참조하거나 재사용 할 수 있다. 이름, 값, 만료일(저장기간), 경로 정보로 구성되어 있다.
- 클라이언트에 총 300개의 쿠키를 저장할 수 있으며 도메인 당 20개의 쿠키를 가질 수 있다. 하나의 쿠키는 최대 4KB까지 저장 가능하다.
- 보안에 약하다. 쿠키를 훔쳐 계정 접근 권한을 탈취 후 유저의 정보를 악용할 수 있음.
* 세션
- 서버에 세션에 대한 정보를 저장해놓고 세션 쿠키를 클라이언트에게 주어 서버가 클라이언트를 식별할 수 있도록 하는 방식. 용량제한이 없다.
- 서버에 저장되어 서버 메모리로 로딩하기 때문에 세션이 생길 때마다 리소스를 차지한다.
- 서버에 세션 객체를 생성하며 각 클라이언트마다 고유한 세션 ID값을 부여한다.
- 쿠키를 사용하여 세선 ID값을 클라이언트에 보낸다. 웹 브라우저가 종료되면 세션 쿠키는 삭제된다.
쿠키 | 세션 | |
저장위치 | 클라이언트에 저장 | 서버에 저장 |
보안 | 클라이언트의 브라우저 로컬에 저장되기 때문에 변질되거나 HTTP리퀘스트 요청 시 갈취당할 가능성이 있어 보안에 취약함 | 쿠키를 이용해 세션 ID만 저장하고 그것을 구분해 서버에서 처리하기 때문에 쿠키에 비하면 안전함 |
만료시점 | 만료시간은 있지만 파일로 저장되기 때문에 브라우저를 종료해도 계속해서 정보가 남아있다. 만료기간에 따라 상대적으로 넉넉하게 쿠키를 삭제할 때 까지 유지된다. | 만료시간을 정할 수 는 있지만 브라우저가 종료되면 그에 상관없이 삭제된다. |
속도 | 쿠키에 정보가 있기 때문에 서버 요청 시 속도가 빠르다. | 정보가 서버에 있기 때문에 쿠키에 비해 느리다. |
로컬 스토리지
브라우저를 종료해도 유지되는 데이터로, 명시적으로 지우지 않는 한 영구적으로 저장된다. 서로 다른 브라우저 탭이라도 동일한 도메인이라면 동일한 로컬 스토리지를 사용한다. 자동 로그인같은 지속적으로 필요한 정보를 저장하기에 좋다.
세션 스토리지
window 객체와 동일한 유효 범위 및 생존 기간을 가지며 탭을 닫을 시 데이터가 삭제된다. 잠시동안 필요한 정보를 저장하기에 좋다.(일회성 로그인 등)