본문 바로가기
웹해킹 스터디

Background: Cookie & Session

by yejin_l 2024. 2. 2.
728x90

[2. 쿠키]

: 일반적으로 클라이언트의 정보 기록과 상태 정보를 표현하는 용도로 사용함.

- 쿠키는 서버와 통신할 때마다 전송되기 때문에 쿠키가 필요 없는 요청을 보낼 때 리소스 낭비가 발생할 수 있습니다. 최근에는 이러한 단점을 보완하기 위해 Modern Storage APIs를 통해 데이터를 저장하는 방식을 권장하고 있음.
- 상태 정보 : 많은 웹 사이트에서는 회원 가입과 로그인을 통해 개개인에게 맞춤형 서비스를 제공한다.  웹 서버에서는 수많은 클라이언트의 로그인 상태와 이용자를 구별해야 하는데, 이때 클라이언트를 식별할 수 있는 값을 쿠키에 저장해 사용한다.

 

  • Figure1. HTTP 프로토콜 특징
    • connectionless : 하나의 요청에 하나의 응답을 한 후 연결을 종료하는 것을 의미
    • stateless : 하나의 요청에 하나의 응답을 한 후 연결을 종료하는 것을 의미

- 쿠키가 없는 통신 : 서버는 요청을 보낸 클라이언트가 누군지 알 수 없기 때문에 현재 어떤 클라이언트와 통신하는지 알 수 없음.
- 쿠키가 있는 통신 :  클라이언트는 서버에 요청을 보낼 때마다 쿠키를 포함하고, 서버는 해당 쿠키를 통해 클라이언트를 식별함.

 

- 쿠키 변조 : 악의적인 클라이언트는 쿠키 정보를 변조해 서버에 요청을 보낼 수 있음. 이때, 만약 서버가 별다른 검증 없이 쿠키를 통해 이용자의 인증 정보를 식별한다면 공격자가 타 이용자를 사칭해 정보를 탈취할 수 있음

 

[3. 세션]

: 쿠키에 인증 상태를 저장하지만 클라이언트가 인증 정보를 변조할 수 없게 하기 위해 세션(Session)을 사용함.

- 세션은 인증 정보를 서버에 저장하고 해당 데이터에 접근할 수 있는 키(유추할 수 없는 랜덤한 문자열)를 만들어 클라이언트에 전달하는 방식으로 작동함. => Session ID

- 브라우저는 해당 키를 쿠키에 저장하고 이후 HTTP 요청을 보낼 때 사용함. -> 서버는 요청에 포함된 키에 해당하는 데이터를 가져와 인증 상태를 확인함.

 

- 쿠키 vs 세션 : 쿠키는 데이터 자체를 이용자가 저장하며, 세션은 서버가 저장한다는 핵심적인 차이가 있음. 

 

  • 쿠키 적용법
    • 쿠키는 클라이언트에 저장되기 때문에 클라이언트는 저장된 쿠키를 조회, 수정, 추가할 수 있음.
    • 이용자가 요청을 보낼 때 쿠키 헤더를 변조할 수 있음.
    • 쿠키를 설정할 때에는 만료 시간을 지정할 수 있고, 만료 시간 이후에는 클라이언트에서 쿠키가 삭제됨.

(cookie / session-basic)

728x90

'웹해킹 스터디' 카테고리의 다른 글

ServerSide: File Vulnerability  (1) 2024.02.28
ServerSide: Command Injection  (0) 2024.02.28
ClientSide: CSRF(Cross Site Request Forgery)  (0) 2024.02.15
ClientSide: XSS  (0) 2024.02.15
Introduction of Webhacking & Background:Web  (1) 2024.01.24