728x90
HTTP 프로토콜의 특징
Connectionless : 하나의 요청에 하나의 응답을 한 후 연결을 종료하는 것을 의미함
Stateless : 통신이 끝난 후 상태 정보를 저장하지 않는 것을 의미함
이러한 특성을 갖는 HTTP에서 상태를 유지하기 위해 쿠키(Cookie)가 탄생했습니다. 쿠키는 Key와 Value로 이뤄진 일종의 단위로, 서버가 클라이언트에게 쿠키를 발급하면, 클라이언트는 서버에 요청을 보낼 때마다 쿠키를 같이 전송함
쿠키의 용도
일반적으로 쿠키는 클라이언트의 정보 기록과 상태 정보를 표현하는 용도로 사용한다.
악의적인 클라이언트는 쿠키 정보를 변조해 서버에 요청을 보낼 수 있다.
웹 통신에서도 클라이언트가 쿠키를 변조해 서버에 요청을 보낼 수 있다. 따라서, 쿠키에 인증 상태를 저장하지만 클라이언트가 인증 정보를 변조할 수 없게 하기 위해 세션(Session)을 사용한한다. 세션은 인증 정보를 서버에 저장하고 해당 데이터에 접근할 수 있는 키(유추할 수 없는 랜덤한 문자열)을 만들어 클라이언트에 전달하는 방식으로 작동한다.
---> 해당 키를 일반적으로 Session ID라고 한다.
쿠키에는 세션 정보가 저장되어 있고 서버는 이를 통해 이용자 식별하고 인증을 처리한다.
공격자가 이용자의 쿠키를 훔칠 수 있으면 세션에 해당하는 이용자의 인증 상태를 훔칠 수 있는데, 이를 세션 하이재킹이라고 한다.
728x90