Cookie

HTTP에서는 Connectionless와 Stateles라는 특징 때문에 웹 서버가 클라이언트를 기억할 수 없다.

이때 웹 서버가 클라이언트를 식별할 수 있도록 만든 것이 바로 cookie이다.

coockie는 웹 서버가 클라이언트한테 발급하고, 클라이언트는 cookie를 요청에 포함하여 전송한다.

cookie는 key와 value로 이루어져 있다.

 

→ 쿠키는 일반적으로 클라이언트의 정보 기록과 상태 정보를 표현하는 용도로 사용하고, 클라이언트에 저장된다.

 

 

 

HTTP 프로토콜 특징

Connectionless 하나의 요청에 하나의 응답을 한 후 연결을 종료하는 것을 의미한다.
특정 요청에 대한 연결은 이후의 요청과 이어지지 않고 새 요청이 있을 때 마다 항상 새로운 연결을 맺는다.
Stateless 통신이 끝난 후 상태 정보를 저장하지 않는 것을 의미한다.
이전 연결에서 사용한 데이터를 다른 연결에서 요구할 수 없다.

 

위처럼 HTTP 프로토콜은 웹 서버와의 통신이 끝난 후 연결을 끊어버리기 때문에 웹 서버는 클라이언트를 기억할 수 없다.

따라서 cookie에 사용자를 식별할 수 있는 정보를 담아 HTTP 요청에 함께 전달하는 것이다.

 

하지만, 보안적인 문제도 존재한다.

cookie에 사용자 인증 정보를 담아 전달하기만 하면 요청하는 리소스를 얻을 수 있기 때문에 다른 사용자가 자신을 사칭하여 개인정보를 탈취할 수도 있다.

 

 

 

 

 

Session

cookie는 인증 정보를 변조할 수 있기 때문에 다른 방법이 필요하다.

session은 cookie와는 달리 인증 정보를 서버측에 저장(session storage)하고, 해당 데이터에 접근할 수 있는 key를 클라이언트에 전달한다.

이 키를 Seesion ID라고 한다.

 

브라우저에서는 Session ID를 cookie에 저장하고, HTTP 요청을 보낼 때마다 함께 전달한다.

서버에서는 key에 대응하는 데이터를 가져와서 인증 상태를 확인한다.

 

 

 

→ 개발자 도구의 Application 탭에서 cookie를 확인할 수 있다.

 

https://dreamhack.io/lecture/courses/166

 

Background: Cookie & Session

이 코스에서는 쿠키와 세션에 대해 설명합니다.

dreamhack.io

 

'Study > Web Hacking' 카테고리의 다른 글

[dreamhack] cookie  (0) 2022.01.25
[dreamhack] devtools-sources  (0) 2022.01.25
[dreamhack] web browser  (0) 2022.01.25
[dreamhack] web  (0) 2022.01.25
[dreamhack] http/https  (0) 2022.01.25
복사했습니다!