1. 쿠키(Cookie)
- Connectionless, Stateless 특성을 갖는 HTTP에서 상태를 유지하기 위해 쿠키(Cookie)가 탄생함.
Connectionless : 하나의 요청에 하나의 응답을 한 후 연결을 종료하는 것을 의미
Stateless : 통신이 끝난 후 상태 정보를 저장하지 않는 것을 의미
- 쿠키는 Key와 Value로 이뤄진 일종의 단위이며 클라이언트의 정보 기록과 상태 정보를 표현하는 용도로 사용.
- 쿠키 변조
쿠키는 클라이언트의 브라우저에 저장되고 요청에 포함되는 정보이므로, 악의적인 클라이언트는 쿠키 정보를 변조해 서버에 요청을 보낼 수 있음.
- 데이터를 이용자가 저장함.
2. 세션(Session)
- 쿠키에 인증 상태를 저장하지만 클라이언트가 인증 정보를 변조할 수 없도록 하기 위해 사용.
- 인증 정보를 서버에 저장하고 해당 데이터에 접근할 수 있는 키(유추할 수 없는 랜덤한 문자열)을 만들어 클라이언트에 전달하는 방식으로 작동.
키 : Session ID
- 데이터를 서버가 저장함.
3. 쿠키 적용법
- 서버
HTTP 응답 중 헤더에 쿠키 설정 헤더(Set-Cookie)를 추가하면 클라이언트의 브라우저가 쿠키를 설정함.
HTTP/1.1 200 OK
Server: Apache/2.4.29 (Ubuntu)
Set-Cookie: name=test;
Set-Cookie: age=30; Expires=Fri, 30 Sep 2022 14:54:50 GMT;
...
- 클라이언트
자바스크립트를 사용해 쿠키를 설정함.
document.cookie = "name=test;"
document.cookie = "age=30; Expires=Fri, 30 Sep 2022 14:54:50 GMT;"
4. 세션 활용
- 세션 하이재킹(Session Hijacking) : 공격자가 이용자의 쿠키를 훔칠 수 있으면 세션에 해당하는 이용자의 인증 상태를 훔칠 수 있음
출처
해커들의 놀이터, Dreamhack
해킹과 보안에 대한 공부를 하고 싶은 학생, 안전한 코드를 작성하고 싶은 개발자, 보안 지식과 실력을 업그레이드 시키고 싶은 보안 전문가까지 함께 공부하고 연습하며 지식을 나누고 실력 향
dreamhack.io