본문 바로가기

개념정리/Web Hacking

4. Cookie & Session

 

저번 시간에는 Web Browser에 대하여 공부하였다.

이번 시간은 쿠키와 세션에 대하여 공부할 것이다.

 


1. HTTP 프로토콜 특징

클라이언트의 IP 주소와 User-Agent는 매번 변경될 수 있는 고유하지 않는 정보이다. 또한 HTTP 프로토콜의 1) Connectionless2) Stateless 특징 때문에 웹 서버는 클라이언트를 기억할 수 없다.

1) Connectionless

  • 하나의 요청에 하나의 응답을 한 후 연결을 종료하는 것
  • 연결은 이어지지 않고 요청이 있을 때 마다 항상 새로운 연결을 맺는다.

2) Stateless

  • 통신이 끝난 후 상태 정보를 저장하지 않는 것
  • 이전 연결에서 사용한 데이터를 다른 연결에서 요구할 수 없다.

 

2. 쿠키

위 2가지 HTTP 프로토콜의 특징때문에 HTTP에서 상태를 유지하기 위해 쿠키를 사용한다. 쿠키는 Key와 Value로 이루어진 일종의 단위이다. 서버가 클라이언트에게 쿠키를 발급하면, 클라이언트는 서버에 요청을 보낼 때마다 쿠키를 같이 전송한다. 서버는 클라이언트의 요청에 포함된 쿠키를 확인해 클라이언트를 구분한다.

1) 정보 기록

웹 서비스 사용 시 팝업 창에 "다시 보지 않기" 버튼이 있는 것도 쿠키를 사용한다. 웹 서버는 각 클라이언트의 팝업 옵션을 기억하기 위해 쿠키에 해당 정보를 기록하고, 쿠키를 통해 팝업 창 표시 여부를 판단한다. 쿠키는 서버와 통신할 때마다 전송되기 때문에 쿠키가 필요 없는 요청을 보낼 때 리소스 낭비가 발생할 수 있다. 

2) 상태 정보

많은 웹 사이트에서는 회원 가입과 로그인을 사용한다. 웹 서버에서는 수많은 클라이언트의 로그인 상태와 이용자를 구별해야 하는데, 이때 클라이언트를 식별할 수 있는 값을 쿠키에 저장해 사용한다.

3) 쿠키 변조

쿠키는 클라이언트의 브라우저에 저장되고 요청에 포함되는 정보이다. 따라서, 악의적인 클라이언트는 쿠키 정보를 변조해 서버에 요청을 보낼 수 있다. 만약 서버가 별다른 검증 없이 쿠키를 통해 이용자의 인증 정보를 식별한다면 공격자가 타 이용자로 사칭해 정보를 탈취할 수 있다.

 

3. 세션

웹 통신에서 쿠키를 변조해 서버에 요청을 보낼 수 있다. 그러므로 쿠키에 인증 상태를 저장하지만 클라이언트가 인증 정보를 변조할 수 없게 하기 위해 세션을 사용한다.

세션은 인증 정보를 서버에 저장하고 해당 데이터에 접근할 수 있는 키를 만들어 클라이언트에 전달하는 방식으로 작동한다. 해당 키를 Session ID라고 한다. 브라우저는 해당 키를 쿠키에 저장하고 HTTP 요청을 보낼 때 사용한다. 서버는 요청에 포함된 키에 해당하는 데이터를 가져와 인증 상태를 확인한다.

 


 

이번 시간은 쿠키와 세션에 대하여 공부하였다.

 

'개념정리 > Web Hacking' 카테고리의 다른 글

[Web Hacking] Cross Site Scripting : XSS  (0) 2022.08.11
3. Web Browser  (0) 2022.08.02
2. Web  (0) 2022.08.01
1. HTTP/HTTPS  (0) 2022.08.01