我需要移除excessive headers个(主要是为了通过渗透测试).我花了很多时间研究涉及运行UrlScan的解决方案,但这些解决方案和UrlScan needs to be installed each time an Azure instance is started一样繁琐.

Azure必须有一个好的解决方案,不需要从启动时就部署安装程序.cmd.

据我所知,响应标题添加在different places中:

  • Server:由IIS添加.
  • X-AspNet-Version:由系统添加.网状物HttpResponse类中刷新时的dll
  • X-AspNetMvc-Version:由MvcHandler在System.Web.dll中添加.
  • X-Powered-By:由IIS添加

有没有办法进行配置(通过web.config等)IIS7删除/隐藏/禁用HTTP响应头,以避免在asafaweb.com时出现"过量头"警告,而无需创建IIS模块或部署每次启动Azure实例时都需要运行的安装程序?

推荐答案

以下更改允许您在编写自定义HttpModule时删除Azure without中的这些HTTP响应头.

网络上的大多数信息都是过时的,并且涉及到UrlScan(它后来被集成到IIS7中,但删除了RemoveServerHeader=1选项).下面是我找到的最简洁的解决方案(这要归功于this blogthis answerthis blog的总和).

要删除Server,请转到"全局".尽快找到/创建Application_PreSendRequestHeaders事件并添加以下内容(感谢BKthis blog,这在卡西尼/本地开发人员上也不会失败):

2014年4月编辑:可以将PreSendRequestHeaders和PreSendRequestContext事件与本机IIS模块一起使用,但不要将它们与实现IHttpModule的托管模块一起使用.设置这些属性可能会导致asynchronous requests出现问题.正确的版本是使用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中.配置查找/创建<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中.配置查找/创建<system.webServer>并添加:

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

    ...

Asp.net相关问答推荐

Azure DevOps 构建管道正在发布旧的/缓存的构建工件

为什么 @Html.EditorFor 和 @Html.PasswordFor 在 MVC 中创建不同的样式框?

某些黑客能否从用户那里窃取 Web 浏览器 cookie 并在网站上使用该名称登录?

等待本地主机,永远!

如何检测 ASP.net 应用程序中的 SqlServer 连接泄漏?

在属性中实现逻辑是一种好习惯吗

Windows 运行 ASP.NET 的 IIS 替代方案

IIS 中的 existingResponse="PassThrough" 是什么意思?

HttpContext.Current 在 MVC 4 项目中未解决

ASP.NET web.config:system.web.compilation 中的 debug 属性的默认值是什么?

导航到本地 IIS Express 时,Chrome 会返回错误请求 - 请求太长

使用 VirtualPathProvider 从 DLL 加载 ASP.NET MVC 视图

.NET 4.0 中的自定义 MembershipProvider

如何获取程序集的最后修改日期?

如何直接在 .aspx 页面中访问 web.config 设置?

为什么 Controls 集合不提供所有 IEnumerable 方法?

您可以从 web.config 文件中的其他位置提取 log4net AdoNetAppender 的 connectionString 吗?

Sys.WebForms.PageRequestManagerServerErrorException:处理服务器上的请求时发生未知错误.

您将如何将 ASP.Net MVC 嵌入到现有的网站项目中?

ASP.NET 自定义控件 - 未知的服务器标记