지난 번 웹 해킹의 기초 HTTP/HTTPS protocol 에 이어 웹 브라우저에서 배우는 부분들에 대해 공부를 하고 오늘은 이어 3강 쿠키와 세션에 대해서 공부를 했다.
앞부분 복습 차 다시 한번 설명하자면, 이번에 학습한 쿠키와 세션은 [F12] 키를 활용해 개발자 도구 창에서 [Application]에서 들어가면 확인할 수 있다.
등장배경
HTTP에는 2가지 특징으로 클라이언트의 IP 주소와 User-Agent는 웹 서버가 기억할 수 없다.
HTTP의 두가지 특징
- Connectionless : 하나의 요청에 하나의 응답을 한 후 연결을 종료하는 것을 의미
- Stateless : 통신이 끝난 후 상태 정보를 저장하지 않는 것을 의미
쿠키의 구성
Key , Value 값으로 이루어져있음.
(그 외에 0가지 이상의 속성이 존재 : 사이즈, 도메인, 경로 등)
쿠키의 역할
1) 클라이언트의 정보 기록과 상태 정보를 표현하는 용도로 사용
2) 클라이언트에 저장되기 때문에 저장된 쿠키를 조회, 수정 ,추가가 가능함. 헤더 변조도 가능한데 만료 시간이 지정이 가능하고, 그 시간이후에는 삭제된다.
등장배경
웹 통신에서 클라이언트가 쿠키를 변조해 서버에 요청을 보낼 수 없다는 것을 알 수 있다. 따라서 세션과 쿠키를 동시에 사용하여 다른 사람이 내 쿠키를 변조해서 사용하는 것을 방지할 수 있다.
세션의 역할
세션은 인증 정보를 서버에 전달한다. 그리고 해당 데이터에 접근할 수 있는 키를 만들어 클라이언트에 전달한다.
이때 키는 유추할 수 없는 랜덤 문자열을 얘기한다.
쿠키와 세션의 차이점
쿠키는 데이터 자체를 이용자가 저장하지만, 세션은 서버에게 있다는 차이가 있다.
세션 하이재킹 : 공격자가 이용자의 쿠키를 훔칠 수 있으면 세션에 해당하는 이용자의 인증 상태를 훔칠 수 있음.