source

Azure/에서 과도한 HTTP 응답 헤더 제거/숨기기/사용 안 함UrlScan이 없는 IIS7

manysource 2023. 5. 5. 09:54

Azure/에서 과도한 HTTP 응답 헤더 제거/숨기기/사용 안 함UrlScan이 없는 IIS7

과도한 헤더를 제거해야 합니다(주로 침투 테스트를 통과하기 위해).UrlScan 실행과 관련된 솔루션을 살펴보았지만 Azure 인스턴스를 시작할 때마다 UrlScan을 설치해야 하기 때문에 번거롭습니다.

startup.cmd에서 설치 프로그램을 배포하지 않는 Azure용 솔루션이 있어야 합니다.

응답 헤더는 다른 위치에 추가되는 것으로 알고 있습니다.

  • 서버: IIS에 의해 추가되었습니다.
  • X-AspNet-Version: 시스템에서 추가했습니다.HttpResponse 클래스에서 Flush 시 Web.dll
  • X-AspNetMvc-버전:MvcHandler가 시스템에 추가했습니다.웹.dll.
  • X-Powered-By: IIS에 의해 추가됨

web.config 등을 통해 구성할 수 있는 방법이 있습니까?IIS 모듈을 만들거나 Azure 인스턴스가 시작될 때마다 실행되어야 하는 설치 프로그램을 배포하지 않고 asafaweb.com 에서 "과도한 헤더" 경고를 피하기 위해 HTTP 응답 헤더를 제거/숨김/비활성화하는 IIS7?

다음과 같이 변경하면 사용자 정의 HttpModule을 작성하지 않고 Azure에서 이러한 HTTP 응답 헤더를 제거할 수 있습니다.

인터넷에 있는 대부분의 정보는 최신이 아니며 UrlScan(이후 IIS7에 통합되었지만,RemoveServerHeader=1옵션이 제거됨).아래는 제가 찾은 가장 깔끔한 솔루션입니다( 블로그, 이 답변, 그리고 이 블로그를 합친 것 덕분입니다).

서버를 제거하려면 Global.asax로 이동하여 다음을 찾아 만듭니다.Application_PreSendRequestHeaders이벤트를 수행하고 다음을 추가합니다(BK와 이 블로그 덕분에 이 또한 Cassini/local dev에서 실패하지 않을 것입니다).

2014년 4월 편집: PreSendRequest를 사용할 수 있습니다.기본 IIS 모듈이 있는 헤더 및 PreSendRequestContext 이벤트는 IHTTP 모듈을 구현하는 관리되는 모듈에서는 사용하지 않습니다.이러한 속성을 설정하면 비동기 요청에 문제가 발생할 수 있습니다.올바른 버전은 BeginRequest 이벤트를 사용하는 것입니다.

    protected void Application_BeginRequest(object sender, EventArgs e)
    {
        var application = sender as HttpApplication;
        if (application != null && application.Context != null)
        {
            application.Context.Response.Headers.Remove("Server");
        }
    }

X-AspNet-Version을(를) 제거하려면 web.config에서 찾기/만들기<system.web>추가:

  <system.web>
    <httpRuntime enableVersionHeader="false" />

    ...

X-AspNetMvc-Version을(를) 제거하려면 Global.asax로 이동한 다음Application_Start이벤트를 수행하고 다음과 같이 줄을 추가합니다.

  protected void Application_Start()
  {
      MvcHandler.DisableMvcResponseHeader = true;
  }

X-Powered-By를 제거하려면 web.config에서 찾기/만들기<system.webServer>추가:

  <system.webServer>
    <httpProtocol>
      <customHeaders>
        <remove name="X-Powered-By" />
      </customHeaders>
    </httpProtocol>

    ...

MSDN은 Azure 웹 사이트에서 헤더를 숨기는 방법에 대한 이 기사를 게시했습니다.이제 시스템에 항목을 추가하여 web.config에서 서버를 숨길 수 있습니다.웹 서버

<security>
      <requestFiltering removeServerHeader ="true" />
</security>

하지만 VS는 위의 내용이 무효라고 눈살을 찌푸릴 것입니다.위 링크에 코드 사진이 있어 찾기가 어렵습니다.MVC 버전은 위와 같이 응용 프로그램 시작 시에도 숨겨져 있습니다. x-powered-by 및 에 대해서도 마찬가지입니다.넷 버전.

또한 NuGet에는 코드 변경 없이 몇 줄의 구성을 통해 이를 달성할 수 있는 패키지가 있습니다. NWebsec.버전 헤더 제거에 대한 문서는 https://github.com/NWebsec/NWebsec/wiki/Suppressing-version-headers 에서 찾을 수 있습니다.

여기서 데모합니다. http://www.nwebsec.com/HttpHeaders/VersionHeaders (Azure 소재)

고지 사항:저는 그 프로젝트의 개발자입니다.

닉 에반스의 대답은 완벽하지만,

보안을 위해 이러한 헤더를 제거하는 경우에는 다음을 변경해야 합니다.ASP.NET Session coockie name사용된 언어 또는 서버 버전을 확인하는 것이 더 쉽기 때문입니다.

여기에 이미지 설명 입력

쿠키 이름 변경하기: (크리에이티브)

<system.web>
  <sessionState cookieName="PHPSESSID" />
</system.web>

Azure 웹사이트와 스캐너가 보고 싶어하는 몇 가지 다른 항목과 관련된 @give me 5 minutes 및 @Akhooli의 이전 답변을 정리하면 ASafaWeb을 Azure 사이트와 행복하게 만들기 위해 변경한 사항입니다.

Azure 선호도 헤더 쿠키가 https만 있는 것이 아니라 선호도가 재생하고 싶은 쿠키 유형이라고 여전히 불평합니다. 그렇죠?

<system.web>
    <compilation debug="false">
    <httpRuntime enableVersionHeader="false" />
    <httpCookies httpOnlyCookies="true" requireSSL="true" />    
    <customErrors mode="RemoteOnly" defaultRedirect="~/Error.aspx" />
</system.web>

<system.webServer>
    <httpProtocol>
      <customHeaders>
        <add name="X-Frame-Options" value="DENY" />
        <remove name="X-Powered-By" />
      </customHeaders>
    </httpProtocol>
    <security>
      <!--removes Azure headers-->
      <requestFiltering removeServerHeader="true" />
    </security>
</system.webServer>

언급URL : https://stackoverflow.com/questions/12803972/removing-hiding-disabling-excessive-http-response-headers-in-azure-iis7-without