1. 쿠키
쿠키는 웹 어플리케이션이 사용자를 구분할 때 사용되는 HTTP 프로토콜의 중요한 요소입니다.
쿠키는 서버가 클라이언트에게 데이터를 보내거나,
클라이언트가 서버에게 데이터를 요청할 때 사용합니다
. 쿠키를 사용하는 매커니즘은 다음과 같습니다.1.1 쿠키 생성 및 사용
- 서버는 사용자에게 전달할 식별정보를 담아 Cookie를 생성한다.
- 서버는
Set-Cookie
헤더를 통해 클라이언트에게 전송한다.
- 쿠키를 받은 사용자는 서버로 보내는 요청에 쿠키 헤더를 더한다.
1.2 쿠키의 속성
쿠키 속성 명 | 설명 |
Expires | 쿠키의 유효 기간을 나타낸다. Expires는 브라우저에게 유효 기간까지만 쿠키를 사용할 수 있게 한다. Expires 속성이 없다면 현재 세션에서만 이용 가능하다 |
domain | 쿠키를 사용할 수 있는 도메인을 나타낸다. |
path | 쿠키가 사용할 수 있는 URL 경로를 나타낸다 |
secure | 이 속성이 설정되면 쿠키는 HTTPS 요청으로만 전송한다. |
HttpOnly | 이 속성이 설정되면 쿠키는 클라이언트 쪽의 자바 스크립트로 직접 접근할 수 없다. ( 우회법이 없진 않다 ) |
SameSite | 쿠키가 cross-site 요청과 함께 전송되지 않음을 요구한다. |
쿠키의 속성은 어디서 볼 수 있나요?
F12->Application->cookie
에서 볼 수 있습니다.쿠키를 받아오는 예시
쿠키를 사용할 일이 있으면, 웹 서버는(웹 어플리케이션) 사용자에게
Set-Cookie
헤더를 이용하여 쿠키를 반환합니다.- 브라우저가 서버에게 접근하여 인증에 성공하고 쿠키를 받은 모습입니다.
- 현재 쿠키는 JESSION~ 형태이며 PATH는 전부, HttpOnly가 걸려있습니다.
2. 쿠키의 사용
2.1 쿠키가 사용되는 곳
- 기술적 쿠키 : 검색하는 사람이 사람인지, 어플리케이션인지 수행
- 분석 쿠키 : 쿠키를 통해 어떤 종류를 검색하는지, 시간, 언어 등을 수집한다.
- 광고 쿠키 : 검색 내용 및 언어 등을 따라서 광고를 개재한다.
2.2 자주 사용되는 쿠키
이름 | 사용처 | 설명 |
JSESSIONID | 톰캣 컨테이너 | 톰캣 컨테이너에서 세션을 유지하기 위해 발급 |
PHPSESSIONID | PHP | PHP 웹사이트에서 세션을 유지하기 위해 발급 |
_ga, _gid, _gat | 구글 애널리틱스 | 구글 애널리틱스 추적 코드에 사용 |
3. 세션
웹서버에 저장되는 Session은 하나의 유저(브라우저)가 웹서버에 접근한 시점부터 부여되고 유지되며,
유저의 상태 정보 등을 저장합니다
.3.1 세션이 어떻게 유지되는가
웹 서버에서 유니크한 값
ex) email
으로 세션을 생성하게 되면 웹 서버는 해당 세션을 쿠키 형태로 유저(웹 브라우저)한테 전달하게 됩니다.
유저는 해당 쿠키를 브라우저에 저장한 상태로 활동을 하며 요청 정보마다 웹 서버에게 자신의 상태를 전달한다. 3.2 세션을 관리하는 방법
웹 어플리케이션별로 세션을 구현하는 법은 각기 다르다. 하지만 거의 공통적으로 확인할 수 있는 것은
웹서버가 세션을 생성하고 그 안에 속성 값을 넣어
사용자 세션을 컨트롤 한다