2023. 11. 14. 18:33 Web
웹에서 쿠키란 무엇이고 어떻게 활용되는가?
개인 공부용 포스팅이라 다소 틀린 내용이 포함되어 있을수 있으니 적당히 거르고 검증해서 보시기 바랍니다.
틀린내용은 댓글로 알려주시면 감사합니다.
쿠키란?
- 서버의 필요에 따라서 웹 브라우저가 저장하는 작은 데이터들이라고 생각하면 된다.
- 쿠키는 서버에서 오는 응답 속 header 내용에 따라서 저장된다.
- 그냥 로컬 파일 데이터라고 생각하면 편함
쿠키는 어떻게 사용하는가?
- 서버의 응답속 Heaer 중 Set-Cookie Header안에 key=value 형태로 포함되어 있다.
- 해당 key에 따른 value 값을 저장하며 쿠키 항목에 대한 여러가지 추가 설정을 지정할 수 도 있다.
쿠키 저장 순서
- Response 내의 Set-Cookie Header 확인.
- 해당 Header 속 cookie들을 웹 브라우저가 저장
- 그 이후 브라우저를 통해 보내는 요청에는 cookie 정보가 포함되어 전송된다.
쿠키의 활용 예
- 특정 유저의 로그인 정보를 개별 브라우저에 저장하여 자동 로그인에 활용 가능
- 특정 계정의 인터넷 검색어 등을 쿠키에 저장하고 이를 활용하여 유저에게 맞춤 화면을 노출 가능.
쿠키의 장점
- http 특징중 하나인 stateless를 극복하려할 때 쿠키를 사용 가능.
-> 위의 활용 예와 같은 경우 특정 유저에 대한 일종의 상태정보를 쿠키로 누적 가능.
쿠키의 단점
- 브라우저에 저장된다.
- 타인에게 노출되거나 변조될 여지가 있다.
- 웹 브라우저마다 생성되기 때문에 다른 브라우저로 접속시 쿠키가 유지되지 않는다.
사실상 단점중 보안상의 이슈가 제일 크며 이로 인해 중요한 정보를 쿠키로 저장하면 이슈가 생길 수 있다.
==============
위에서는 간단한 내용만 적어보았고 이제 좀더 세세한 내용을 알아 보자
===============
쿠키의 종류는 어떤것이 있을까?
1. persistence cookie
2. session cookie
persistence cookie
- 파일로 생성된다.
-> tmi : 임시 인터넷 파일로 생성됨.
- 브라우저의 쿠키 파일을 삭제하거나 해당 쿠키가 만료된 후 사라진다.
- 최초 접속 시 서버로 전송된다.
- 주로 사용되는 곳으로는 팝업 하루동안 띄우지 않기 등이 있다.
session cookie
- 브라우저의 메모리에 생성된다.
- 브라우저를 종료하면 사라진다.
- 최초 접속 시 서버로 전송되지 않는다.
- 주로 session id를 저장할 때 허용된다.
cookie 실제 추가 요청 시
server response :
- Set-Cookie : tmp_cookie=tmp_val
- Set-Cookie : other_key=other_value
cookie가 실제 request에 포함되어 있을 때
- cookie Header 안에 포함되어 온다.
- ex
-> cookie : tmp_name=tmp_val; other_cookie_name=other_cookie_val; ...
-> cookie라는 Header 안에 ;를 구분자로 여러 cookie 항목이 저장되어 있다.
위와 같이 server response에 Set-Cookie header가 들어 있다면
브라우저는 해당 cookie들을 저장한다. 이때 Set-Cookie는 한가지 쿠키밖에 지정을 못하기 때문에
여러 쿠키를 저장할 경우 Set-Cookie Header를 여러개 지정해 주어야 한다.
cookie 추가 시 여러가지 속성 지정하는 방법
Header에 cookie를 지정할 때 여러가지 속성을 지정할 수 있으며 종류는 대략 아래와 같다.
- cname=calue : cookie 이름과 cookie 값
- expires=someday : 해당 cookie의 만료 기간에 대한 정보.
-> 참고 : Max-Age로 해당 쿠키의 유효기간을 짖어할 수도 있다
-> 참고2 : expires, Max-Age를 지정하면 해당 cookie는 persistence cookie가 된다.
그외에도 path, domain 등의 속성 지정이 가능하니 필요 시 검색해보길 바란다.
session cookie 중 알아야하는 것으로는 JSESSION cookie 항목이 있다.
- Session에 대한 정보를 서버가 저장한 후 이에 대해 접근할 수 있도록 지정한 id 를 저장하는 cookie
- 주의 : Session 에 대한 정보를 저장한 cookie가 아니고 그에 대한 식별id 정보이다.
- 주의2 : 해당 JSESSION 속 session id는 각각 접속시, 각각의 브라우저 마다 다르게 할당된다.
'Web' 카테고리의 다른 글
REST API에 대해서. (0) | 2023.12.11 |
---|---|
웹에서 세션이란 무엇이고 어떻게 활용되는가? (0) | 2023.11.14 |
OAuth2에 대해서. (0) | 2023.11.14 |
[web] 알아두면 좋은 개념 정리 - 3 (0) | 2021.07.01 |
[web] 알아두면 좋은 개념 정리 - 2 (0) | 2021.07.01 |