반응형
HTTP는 하나의 Request와 Response 쌍이 독립적으로 구성되어 통신하는 connectionless, stateless 프로토콜.
- 과거에는 서버 부하로 인해 connectionless 속성이 강조되었지만, 최근에는 네트워크 , 서버 등의 성능 향상으로
- HTTP/1.1 부터 Keep-Alive를 통해 일정 시간 사용자와 서버가 계속 연결을 맺고 있음.
- stateless는 연결이 끝나면 상태를 유지하지 않는 것을 의미.
- 따라서 HTTP 요청마다 새로운 커넥션을 열기 때문에 사용자 인증을 계속해서 해야하는 단점이 존재.
- 단점 보완을 위해 상태를 유지하기 위한 Cookie가 탄생함.
Cookie
웹 브라우저는 HTTP Response의 Set-Cookie Header나
javascript document.cookie를 통해 데이터를 쿠키에 저장함.
쿠키를 설정하면 추후 HTTP 요청을 보낼 때 웹 브라우저가 자동으로 헤더에 쿠키를 추가해 전송함.
쿠키는 사용자의 브라우저에 저장됨.
인증상태를 쿠키에 저장하면 쿠키 값을 변경하는 것으로 인증 획득 가능.
Session
쿠키에 인증 상태 데이터 저장 시에 사용자가 임의로 조작 가능.
따라서 서버에 데이터를 저장하기 위해 Session(세션)을 사용.
Session을 활용하면 데이터를 서버에 저장하고 세션ID를 반환함.
이 세션ID는 브라우저가 cookie에 저장하고 요청시에 서버에서 키에 해당하는 데이터를 가져와서 인증상태 확인.
따라서 쿠키는 데이터 자체를 사용자가 임의로 저장할 수 있지만, 세션은 서버가 저장하기 때문에 조작 불가능.
웹 브라우저에는 loaclStorage라는 저장공간도 존재해서 Session ID는 여기에 저장될 수도 있음.
반응형
'Security' 카테고리의 다른 글
[wargame] strcmp (0) | 2021.09.17 |
---|---|
[wargame] cookie (0) | 2021.09.16 |
[Webhacking] 기초 지식 (0) | 2021.09.16 |
Mysql 데이터베이스 해킹 흔적 패킷 분석 (0) | 2020.09.08 |
Nikto 패킷 분석 사례 (0) | 2020.09.06 |