为了使我们的API和站点更加安全,我将删除泄露站点运行信息的标题.

剥离收割台前的示例:

HTTP/1.1 500 Internal Server Error
Cache-Control: private
Content-Type: text/html; charset=utf-8
Server: Microsoft-IIS/8.0
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET
Date: Wed, 05 Jun 2013 00:27:54 GMT
Content-Length: 3687

网状物配置:

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

全球的尽快.反恐精英:

protected void Application_PreSendRequestHeaders() {
    Response.Headers.Remove("Server");
    Response.Headers.Remove("X-AspNet-Version");
    Response.Headers.Remove("X-AspNetMvc-Version");
    Response.AddHeader("Strict-Transport-Security", "max-age=300");
    Response.AddHeader("X-Frame-Options", "SAMEORIGIN");
}

之后,所有对站点和API的调用都会返回更安全的标题,如下所示:

HTTP/1.1 500 Internal Server Error
Cache-Control: private
Content-Type: text/html; charset=utf-8
Date: Wed, 05 Jun 2013 00:27:54 GMT
Content-Length: 3687

到现在为止还好.然而,我在Firebug中注意到,如果你查看静电内容(比如loading.gif),它仍然包含服务器头.

HTTP/1.1 304 Not Modified
Cache-Control: no-cache
Accept-Ranges: bytes
Etag: "a3f2a35bdf45ce1:0"
Server: Microsoft-IIS/8.0
Date: Tue, 25 Jun 2013 18:33:16 GMT

我假设这是由IIS以某种方式处理的,但找不到任何地方删除该头.我试着加上:

<remove name="Server" /> 

到Web中的httpProtocol/customHeaders部分.配置,如上所述.我还try 进入IIS管理器的HTTP响应头部分,为服务器头添加一个假名称/值对.在这两种情况下,它仍然会返回

Server: Microsoft-IIS/8.0

加载任何图像、CSS或JS时.我需要在哪里/做些什么来解决这个问题?

推荐答案

通过将以下内容添加到您的webconfig,您应该能够强制所有请求通过您的托管代码:

<modules runAllManagedModulesForAllRequests="true">

然后,即使是静电文件也应该遵守您的标题规则.

Asp.net相关问答推荐

调用context.Users和context.Set User有什么区别?

ASP.NET Core 延迟加载始终返回 null

如何在编译时为我的 ASP.NET 项目中的每个控制器生成一个单独的 OpenAPI Swagger.json 文件?

检测 ASP.NET 中的内存泄漏

asp.net 单选按钮分组

业务线应用程序:F# 会让我的生活变得轻松吗?

解析 JSON 响应的最简单方法

使用 Elmah 处理 Web 服务中的异常

MvcBuildViews true 与 ASP.NET MVC 2 中的实体框架

Page.IsValid 是如何工作的?

IIS 会话超时与 ASP.NET 会话超时

C# 7 本地函数未按预期工作且未显示错误

ASP.NET Core 中的 NuGet 包位置在哪里?

ASP.NET MVC Url Route 支持(点)

在 ASP.NET 中使用 MasterPages 时使用 JQuery 的正确方法?

对于 DB ID,需要一个较小的 GUID 替代方案,但对于 URL 仍然是唯一且随机的

使用 Web.Config 转换的高级任务

服务器标签格式不正确错误

x-powered by是什么意思?

Appdomain 回收究竟是什么