HTTP 8.5 옵션은 IIS 8.5에서 허용되는 방법을 어떻게 결정합니까?


8

TRACEIIS 8.5 (Windows Server 2012 R2 Datacenter)의 웹 사이트에서이 방법 을 제거하려고합니다 . 아래처럼 요청 필터링을 사용하여 이것을 구현했습니다.

<system.webServer>
  <security>
    <requestFiltering>
      <verbs allowUnlisted="true">
        <add verb="TRACE" allowed="false" />
      </verbs>
    </requestFiltering>
  </security>
</system.webServer>

이 방지의 TRACE내가 보내는 경우 요청하지만, OPTIONS요청, 그것은 여전히 나열 TRACEAllowPublic헤더. IIS를 재설정했지만에서 TRACE벗어날 수 없습니다 OPTIONS. 거부하고 싶지 않습니다 OPTIONS.

준수 검사가 사용 OPTIONS하는 표시기 로 사용하기 때문에 문제가됩니다 TRACE. 나는 이것이 정확하지 않다는 것을 알고 있지만 그것이 내가 충족시켜야 할 기준입니다.

사용 가능한 방법을 올바르게보고하도록 OPTIONS를 가져 오는 방법이 있습니까?

답변:


6

흥미로운 질문입니다. response headersIIS 에서 제거하는 모든 방법 이 AllowPublic헤더에서 작동하지 않는 것 같습니다 . OPTIONS요청은 항상 다음을 반환합니다.

Allow:  OPTIONS, TRACE, GET, HEAD, POST
Public: OPTIONS, TRACE, GET, HEAD, POST

서버가 실제로 허용하는 것에 관계없이.

IIS의 모든 요청은 모듈에 의해 처리되며, OPTIONS요청은 ProtocolSupportModule필수가 아니며 매우 멍청한 것처럼 처리됩니다 .

해당 모듈을 제거하면 서버는 더 이상 옵션 요청에 응답하지 않습니다. 여전히 지원하려는 모듈은 응답하기 위해 다른 모듈을 사용해야합니다.

열다:

%SystemRoot%\System32\inetsrv\config\applicationHost.config

OPTIONSVerbHandler그 줄의 주석을 검색하고 그 줄에있는 동안 위의 ( TRACEVerbHandler) 줄도 찾으십시오 . 이제 새 노드를 추가하십시오 :

<add name="MyOPTIONSVerbHandler" path="*" verb="OPTIONS" modules="StaticFileModule" requireAccess="None" />

전체 블록은 다음과 같아야합니다.

    <!--  <add name="TRACEVerbHandler" path="*" verb="TRACE" modules="ProtocolSupportModule" requireAccess="None" /> 
          <add name="OPTIONSVerbHandler" path="*" verb="OPTIONS" modules="ProtocolSupportModule" requireAccess="None" /> -->
          <add name="MyOPTIONSVerbHandler" path="*" verb="OPTIONS" modules="StaticFileModule" requireAccess="None" /> 

이제 staticFileModule이 OPTIONS요청을 처리하지만 내용을 반환하지는 않습니다.

이제 OPTIONS서버에 요청 Allow하면 Public헤더 도 얻지 못하고 web.config에서 쉽게 추가 할 수 있습니다

<system.webServer>
 <httpProtocol>
      <customHeaders>
          <add name="Allow"  value="GET,POST,HEAD" />  
          <add name="Public" value="GET,POST,HEAD" />
      </customHeaders>
  </httpProtocol>        
</system.webServer>

이제 귀하의 OPTIONS요청이 필요에 따라 작동하지만 추가 헤더도 여전히 유효한 http GET또는 POST요청 과 함께 전송됩니다 .

OPTIONS요청에 해당 헤더 만 사용하려면 이러한 헤더를 설정하는 간단한 http 모듈을 작성하고 위에서 사용한 StaticFileModule 대신 사용하십시오.


답변 주셔서 감사합니다. OPTIONS 처리기가 교체가 필요한지 궁금했습니다. 귀하의 답변에 따라 처리 할 수 ​​있습니다.
alergy
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.