删除/隐藏/禁用过度HTTP响应报头中天青/ IIS7而不UrlScan的(Removing/Hid

2019-06-18 12:08发布

我需要删除过多的头 (主要是通过渗透测试)。 我花时间看这涉及运行UrlScan的解决方案,但这些繁琐的UrlScan的需要每一个Azure的实例启动时要安装 。

必须有Azure的一个很好的解决方案,不涉及从STARTUP.CMD部署安装。

据我所知,响应报头中添加不同的地方 :

  • 服务器 :通过IIS添加。
  • X-ASPNET-版本 :在冲洗中的HttpResponse类的时间System.Web.dll中添加
  • X-AspNetMvc-版本 :通过MvcHandler在System.Web.dll中添加。
  • X-已启动方式 :通过IIS添加

是否有任何方式(通过的web.config等?)来配置IIS7以除去/隐藏/禁用HTTP响应报头,以避免“过度集管”在警告asafaweb.com ,而不产生IIS模块或部署其需要安装人员在每次的Azure的实例启动时运行?

Answer 1:

下面的变化让你删除这些Azure的HTTP响应头,而无需编写自定义HTTP模块。

大部分的在网上的信息是过时的,并涉及UrlScan的(这已被集成到IIS7,但与RemoveServerHeader=1选项移除)。 下面是最巧妙的解决方案,我发现(感谢这个博客 , 这个答案 ,并且这个博客相结合)。

要删除服务器 ,去Global.asax中,找到/创建Application_PreSendRequestHeaders事件并添加以下(感谢BK和这个博客 ,这也将不会在卡西尼/本地开发失败):

编辑2014年4月:您可以使用PreSendRequestHeaders和PreSendRequestContext事件与本地IIS模块,但不实现IHttpModule的管理模块中使用它们。 设置这些属性可能会导致问题的异步请求 。 正确的版本是使用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版,在web.config找到/创建<system.web>并添加:

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

    ...

要删除X-AspNetMvc版,去Global.asax中,找到/创建Application_Start事件,并添加一行,如下所示:

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

脱除X供电-通过 ,在web.config找到/创建<system.webServer>并添加:

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

    ...


Answer 2:

MSDN发表的这篇文章就如何隐藏在Azure上的网站标题。 现在,您可以通过添加到system.webServer条目隐藏web.config中的服务器

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

VS将在上述无效虽然皱眉。 上面的链接有代码,图片,很难找到。 MVC版本仍然隐藏在应用如上开始,同为X供电,通过和.NET版本。



Answer 3:

还有上的NuGet包,可以帮助您通过配置的几行代码没有变化实现这一点:NWebsec。 在除去版本头的文档可以在这里找到: https://github.com/NWebsec/NWebsec/wiki/Suppressing-version-headers

它在这里演示了: http://www.nwebsec.com/HttpHeaders/VersionHeaders (天青)

免责声明:我对这个项目的开发商。



Answer 4:

尼克·埃文斯的回答是完美的,但是...

如果删除这些标题为安全起见,不要忘记改变ASP.NET Session coockie name ! 因为它更容易,当你看到这个猜测使用的语言或服务器版本:

要更改cookie的名称:(创意)

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


Answer 5:

卷起从@ giveme5minutes和@AKhooli以前的答案,因为这涉及到Azure的网站加上扫描仪希望看到一些其他的项目,这些是我取得了令ASafaWeb快乐与Azure的网站进行了更改。

它仍然抱怨Azure的亲和力头的cookie不是仅HTTPS,但亲和力cookie的类型你想反正重播,对不对?

<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>


文章来源: Removing/Hiding/Disabling excessive HTTP response headers in Azure/IIS7 without UrlScan