HTTP와 Cookie에 대해
HTTP와 HTTPS
HTTP는 모든 데이터를 암호화 없이 평문으로 전송되기 때문에 악의적인 목적을 가진 해커와 같은 네트워크를 사용하게 된다면 MITM 공격과 같이 중간자 공격에 취약합니다.
HTTPS는 Secure Sockets Layer (SSL)를 사용하여 공개키 암호화를 사용해 사용자와 서버가 키를 교환하는 방식으로 데이터들이 암호화 되어 네트워크 상에서 전송되기 때문에 일반적으로는 통신 내용을 알아볼 수 없어 비교적 안전한 방식의 프로토콜입니다.
Cookie ?
Http 요청시 매번 새로운 커넥션이 이루어지기 때문에 사용자 인증도 매번 해줘야 한다는 단점을 해결하기 위해 사용자 인증 상태를 유지하는 수단으로 쿠키(Cookie)라는 개념이 등장했습니다.
웹 브라우저에서 HTTP Response의 Set – Cookie의 헤더나 JavaScript의 document.cookie를 통해 데이터를 쿠키에 저장하게 됩니다.
데이터를 Key=value; 키와 값으로 한 쌍으로 쿠키에 저장하게 되고 ; 뒤에 쿠키의 만료시간과 접근 가능한 도메인 등 추가 설정을 할 수 있습니다. 이렇게 저장된 데이터는 추후 HTTP 요청을 보낼 때 웹 브라우저가 자동으로 쿠키를 헤더에 추가하여 전송하게 됨으로서 사용자 인증이 유지 됩니다.
예시 >> JavaScript – document.cookie = “UserNumber=24; Expires=Fri, 30 Oct 2020 21:17:30 GMT;”
Session
쿠키에 인증 상태를 포함하여 데이터를 저장하게 되면 다른 누군가 악의적으로 원래 사용자처럼 요청을 조작할 수 있습니다. 이를 방지하기 위해 데이터를 서버에 저장하는 방법으로 session(세션)을 사용합니다. 이를 활용하면 서버로 데이터를 저장하게 되고 임의의 랜덤 문자열 키를 생성하여 응답하게 되는데 이것은 Session ID라고 합니다.
웹 브라우저에서 해당 Session ID(랜덤 문자열 키)를 쿠키에 저장하고 이후에 HTTP 요청을 보내면 서버에서 Session ID(해당 문자열 키)에 해당하는 데이터를 가져와 인증 상태를 확인하는 방식입니다.
'웹 해킹' 카테고리의 다른 글
Web에 대한 기초적인 개념 이해 - URI란 ? URI의 구조는 ? (0) | 2020.10.27 |
---|