2017年12月22日

2017/12/22 posted in  码农日志
  1. MVC Http响应头优化

MVC Http响应头优化

首先是去掉Banner信息

  • X-Aspnet-Version

    在Web.config 的 <system.web> 节点加上 <httpRuntime enableVersionHeader="false" /> 可去除

  • X-Powered-By

    该响应头有两种去除方式:

    • IIS => HTTP响应头 => 删除该响应头
    • Web.config <system.webServer> => <httpProtocol> => <customHeaders> 节点下添加 <remove name="X-Powered-By" /> 可去除。参考:Custom Headers
  • ServerX-Aspnetmvc-Version

    在MVC中可通过重写 Controller 的 OnActionExecuted 方法实现。也可以通过 HttpModule 处理,参考:IIS 7 – How to send a custom "Server" http header

protected override void OnActionExecuted(ActionExecutedContext filterContext)
{
    filterContext.HttpContext.Response.Headers.Remove("Server");
    filterContext.HttpContext.Response.Headers.Remove("X-Aspnetmvc-Version");
}

然后是加上一些响应头,增加网站安全性

  • X-Frame-Options

    可防止点击劫持(ClickJacking),参考:X-Frame-Options

  • X-XSS-Protection

    X-XSS防护头,可防护XSS攻击,参考:X-XSS-Protection

  • X-Content-Type-Options

    禁用了客户端的 MIME 类型嗅探行为,参考:X-Content-Type-Options

这三个响应头,都通过 Web.config 配置

<system.webServer> => <httpProtocol> => <customHeaders> 节点

<add name="X-Frame-Options" value="SAMEORIGIN" />
<add name="X-XSS-Protection" value="1; mode=block" />
<add name="X-Content-Type-Options" value="nosniff" />