본문 바로가기

서버운영 (TA, ADMIN)/정보보안

[정보보안] 주목할 만한 HTTP 헤더

HTTP 사이클은 클라이언트가 요청할 때나 서버가 응답하는 자세한 내용을 헤더에 실어 보냅니다. 이러한 헤더는 여러 가지가 있습니다.


1. 웹서버가 설정해서 클라이언트 브라우저에 보내는 주요 헤더 정보


Set-Cookie: 이 값은 사용자의 세션이 유지되도록 보장하기 위하여 가장 흔하게 클라이언트에 제공하는 세션 식별자(쿠키)입니다. 해커가 사용자의 세션을 훔칠 수 있다면 공격자는 그 애플리케이션 내에서 해당 피해자인 척 가장할 수 있습니다.


Content-Length: 이 값은 응답문의 바이트 단위 길이입니다. 이 값은 해커가 응용프로그램의 응답을 해독할 때 바이트 단위의 데이터를 예상할 수 있으므로 도움이 됩니다. 특별히 (반복적으로 추측하는) 무작위 대입법에 활용할 만합니다.


Location: 이 값은 응용프로그램이 사용자를 다른 페이지로 보낼 때 사용됩니다. 이 정보는 해커에게 도움이 되는데, 예를 들어 애플리케이션에 성공적으로 인증한 후에만 접근 가능한 페이지를 가리키도록 이용할 수 있기 때문입니다.




2. 클라이언트 브라우저가 웹서버에 보내는 주요 헤더 정보


Cookie: 하나(또는 여러 개)의 쿠키는 사용자의 세션을 유지하기 위해 헤더에 담겨 서버로 되돌려 보내집니다. 이 쿠키의 헤더 값은 서버가 set-cookie로 발행한 헤더 값과 언제나 일치해야 합니다. 이 값은 응용프로그램의 유효한 세션 값을 제공하므로 다른 응용프로그램 사용자를 공격할 때 사용할 수 있습니다. 다른 쿠키들 중엔 그리 흥미로운 것이 없는데, 예를 들어 원하는 언어를 영어로 설정하는 그런 내용들이 포함 되어 있기도 합니다.


Referrer: 이 헤더 값은 다른 웹 페이지를 요청할 때 이전에 열었던 페이지를 목록으로 만듭니다. 이 헤더 값은 곧 "마지막으로 방문한 페이지"를 뜻하며, 이 값은 쉽게 바꿀 수 있기 때문에 해커에게 도움이 됩니다. 따라서 만일 응용 프로그램이 보안에 관한 어떤 것을 이 페이지에 의존한다면, 값을 변조하여 쉽사리 우회시킬 수 있습니다.