[2. 쿠키]
: 일반적으로 클라이언트의 정보 기록과 상태 정보를 표현하는 용도로 사용함.
- 쿠키는 서버와 통신할 때마다 전송되기 때문에 쿠키가 필요 없는 요청을 보낼 때 리소스 낭비가 발생할 수 있습니다. 최근에는 이러한 단점을 보완하기 위해 Modern Storage APIs를 통해 데이터를 저장하는 방식을 권장하고 있음.
- 상태 정보 : 많은 웹 사이트에서는 회원 가입과 로그인을 통해 개개인에게 맞춤형 서비스를 제공한다. 웹 서버에서는 수많은 클라이언트의 로그인 상태와 이용자를 구별해야 하는데, 이때 클라이언트를 식별할 수 있는 값을 쿠키에 저장해 사용한다.
- Figure1. HTTP 프로토콜 특징
- connectionless : 하나의 요청에 하나의 응답을 한 후 연결을 종료하는 것을 의미
- stateless : 하나의 요청에 하나의 응답을 한 후 연결을 종료하는 것을 의미
- 쿠키가 없는 통신 : 서버는 요청을 보낸 클라이언트가 누군지 알 수 없기 때문에 현재 어떤 클라이언트와 통신하는지 알 수 없음.
- 쿠키가 있는 통신 : 클라이언트는 서버에 요청을 보낼 때마다 쿠키를 포함하고, 서버는 해당 쿠키를 통해 클라이언트를 식별함.
- 쿠키 변조 : 악의적인 클라이언트는 쿠키 정보를 변조해 서버에 요청을 보낼 수 있음. 이때, 만약 서버가 별다른 검증 없이 쿠키를 통해 이용자의 인증 정보를 식별한다면 공격자가 타 이용자를 사칭해 정보를 탈취할 수 있음
[3. 세션]
: 쿠키에 인증 상태를 저장하지만 클라이언트가 인증 정보를 변조할 수 없게 하기 위해 세션(Session)을 사용함.
- 세션은 인증 정보를 서버에 저장하고 해당 데이터에 접근할 수 있는 키(유추할 수 없는 랜덤한 문자열)를 만들어 클라이언트에 전달하는 방식으로 작동함. => Session ID
- 브라우저는 해당 키를 쿠키에 저장하고 이후 HTTP 요청을 보낼 때 사용함. -> 서버는 요청에 포함된 키에 해당하는 데이터를 가져와 인증 상태를 확인함.
- 쿠키 vs 세션 : 쿠키는 데이터 자체를 이용자가 저장하며, 세션은 서버가 저장한다는 핵심적인 차이가 있음.
- 쿠키 적용법
- 쿠키는 클라이언트에 저장되기 때문에 클라이언트는 저장된 쿠키를 조회, 수정, 추가할 수 있음.
- 이용자가 요청을 보낼 때 쿠키 헤더를 변조할 수 있음.
- 쿠키를 설정할 때에는 만료 시간을 지정할 수 있고, 만료 시간 이후에는 클라이언트에서 쿠키가 삭제됨.
(cookie / session-basic)
'웹해킹 스터디' 카테고리의 다른 글
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 |