본문 바로가기

개발

Http 기본 메소드 제한


http 기본 메소드 제한해야 하는 이유 



http 인증 프로토콜 순서

  1. 요청 : 사용자가 서버에게 인증이 필요한 자료를 요청
  2. 인증요구 : WWW-Authenticate 서버는 사용자에게 인증을 요구하는 401 상태정보를 요구
  3. 인증 : Authorization 사용자는 이름과 비밀번호를 기술한 헤더와 함께 보낸다.
  4. 성공 : Authorization-Info 인증이 정확하면 서버는 응답한다.


http method 중에 OPTIONS 메소드가 있는데, OPTIONS는 웹서버에서 지원하는 method가 어떤 것들이 있는지를 알려준다.

GET, POST는 기본적인 메소드이므로 제한을 두지 않는데 OPTIONS 은 어떤 메소드가 허용 가능한지 알려줘서 제한 해야함. 

TRACE는 클라이언트가 송신한 request를 그대로 return한다. connector 의 allowTrace 속성으로만 제한함. 


tomcat 에서는 web.xml에 이런식으로 http-method를 넣어서 메소드를 제한 시킬 수 있음. 

<security-constraint>
    <web-resource-collection >
      <web-resource-name >restricted methods </web-resource-name >
      <url-pattern >/* </url-pattern >
      <http-method >OPTIONS </http-method >
    </web-resource-collection >
    <auth-constraint />
  </ security-constraint>


이때 사용자가 서버에 요청을 하고 서버에서는 인증요구를 나타내는 401 상태정보를 사용자에게 

내려줄때 공격자가 해당 공격이 유효하나 권한문제로 인하여 공격이 실패되었음을 유추 할 수 있다.

tomcat에서 http 기본 메소드를 web.xml에서 제한시키고 options 요청을 날리면 401상태 정보를 

사용자에게 넘기는데 이때는 공격이 유효하지 않아서 401 메세지에 대해 다른 작업을 할 필요가 없어보임.