쿠키(Cookie)
Cookie
▶클라이언트에서 저장,관리하는 데이터들.브라우저를 닫아도 데이터를 유지할 수있다.
▶서버에서 Set_Cookie를 응답 헤더로 내려주면 클라이언트는 받아서 저장한다.
▶클라이언트에서 자체적으로 조작할 수 있다.
▶각 상태에 수명을 정할 수 있다.
Set-Cookie
▶Set-Cookie: 키= 값; 옵션
▶응답 헤더에 담으면 브라우저가 알아서 저장한다
▶각 데이터엔 여러 옵션이 존재한다.
▶Expires: 쿠키 만료 날짜를 지정한다.
▶Secure: HTTPS에서만 쿠키를 전송한다.
▶HttpOnly: JavaScript에서 큐키에 접근하지 못하도록 막는다.
▶Max-Age: 쿠키 수명을 정한다. 이때 Expires는 무시된다.
▶Doomain: 도메인이 일치하는 요청만 쿠키가 전송된다.
▶Path: 패스와 일치하는 요청만 쿠키가 전송된다.
쿠키의 취약점
▶XSS(Cross-Site Script)공격을 당할 수 있다.
▶JavaScript를 이용해 악의적인 사용자가 다른 사용자의 쿠키값을 탈취 할 수 있다.
▶쿠키를 암호화 하지 않고 보내면 쿠키값을 중간에 탈취 당할 가능성이 있다.
▶HTTPs
Session
▶HTTP Session Id를 식별자를 구분한다.
▶클라이언트는 HTTP Session Id를 쿠키 형태로 저장한다.
▶서버 자체적으로 기록한다.
세션의 문제점
▶세션은 서버에 파일로 저장된다. 만약 사용자가 엄청 많아지면
▶서버가 만약 2대라면 세션은 어떻게 관리 해야할까
- 이제 서버와 클라이언트간 인증은 별도 토큰을 사용하고
쿠키는 클라이언트 자체적인 지속적인 데이터 관리 용도로 많이 사용된다.
웹 스토리지
▶클라이언트에 데이터를 저장하기 위한 새로운 방법
▶HTML5부터 등장했다.
▶쿠키에서 하기 힘든 것들을 지원하기 위해 등장했다.
▶로컬 스토리지와 세션 스토리지가 있다.
로컬 스토리지
▶로컬 스톨지에 데이터를 저장하면 반영구적으로 데이터가 저장된다.
▶브라우저 종료해도 계속해서 데이터가 남는다.
▶저장했던 도메인과 이용하는 도메인이 다른 경우엔 접근할 수 없다.
▶쿠키와 마찬가지로 Key-Value형태로 저장한다.
세션 스토리지
▶새 창을 생성할 때마다 개별적으로 저장되는 데이터를 관리한다.
▶브라우저를 닫는 순간 사라진다.
▶같은 도메인이어도 세션이 다르면 데이터에 접근할 수 없다.
▶쿠키와 마찬가지로 Key-Value 형태로 저장한다.