CH5 - 09.쿠키
쿠키란
- HTTP는 상태를 유지하지 않는 프로토콜
- 그럼 요청을 보낼 때마다 모든 정보를 URL 쿼리, HTTP 바디로 보내야할까?
쿠키
- 서버로부터 받은 정보를 클라이언트 측(웹 브라우저)에 임시 저장되는 이름=값 형태의 데이터
- 서버가 쿠키를 세팅해서 클라이언트에게 보내주면 앞으로의 요청에 있어 클라이언트가 쿠키 데이터를 함께 서버에 요청 메세지를 보낼 수 있다..
- 유효기간이 있다.(EXPIRES)
- 쿠키를 전송할 도메인과 경로가 정해져 있다.
- 서버가 Set-Cookie 헤더로 쿠키를 전달하면 클라이언트는 쿠키를 저장하여 다음 HTTP 요청의 Cookie 헤더로 활용한다.
쿠키의 도메인
- Set-Cookie : domain=example.com(이름,값 형태)
- example.com(을 비롯한 서브 도메인)에 접근할 때 쿠키 활용
쿠키의 경로
- Set-Cookie:path=/
path에 명시된 경로 하위 경로에서 쿠키 활용
path =/posts
→ path =/posts1,path =/posts2 등 하위 경로에서 쿠키를 활용 할 수 있다.
쿠키의 유효기간
- Set-Cookie:expires = Wed, 날짜(쿠키가 만료되는 시점)
- Set-Cookie:max-age=1000(쿠키를 활용가능한 시간)
쿠키는 보안에 민감하다.(*)
→ 쿠키는 개인정보를 포함하면 안된다.
→ 쿠키 정보는 탈취당하지 않도록 주의 필요
→ 정보는 암호화해서 넣어야한다.
쿠키와 세션
- 쿠키의 저장/관리 주체가 클라이언트(브라우저)라면 세션의 저장/관리 주체는 서버
- 서버는 클라이언트를 식별할 수 있는 세션 ID를 제공하고, 클라이언트는 서버에게 세션 ID를 쿠키로 넘겨 호스트를 식별하게 할 수 있다.
→ 세션 ID값을 기반으로 클라이언트의 요청을 사용자의 정보 등을 서버에서 검증할 수 있다.
쿠키의 보안 기능
- Secure : HTTPS인 경우에만 전송(HTTP를 TLS로 암호화를 통해서 보안 강화 → HTTPS)
- HTTPOnly : 자바스크립트에서 접근 불가, XSS 공격 방지