移除 IIS 的各种头信息
应安全要求,需要移除 IIS 下的 Server、X-AspNet-Version、X-AspNetMvc-Version、X-Powered-By 等信息
X-Powered-By 比较简单,在相应站点下的 web.config 中增加配置:
<system.webServer> <httpProtocol> <customHeaders> <remove name="X-Powered-By"/> </customHeaders> </httpProtocol> </system.webServer>
Server、X-AspNet-Version、X-AspNetMvc-Version 比较复杂
1、通过自己编写 IHttpModule 实现移除:
public class IISHeaderRemoveModule : IHttpModule { public void Init(HttpApplication context) { context.PreSendRequestHeaders += OnPreSendRequestHeaders; } public void Dispose() { } void OnPreSendRequestHeaders(object sender, System.EventArgs e) { HttpContext.Current.Response.Headers.Remove("Server"); HttpContext.Current.Response.Headers.Remove("X-AspNet-Version"); HttpContext.Current.Response.Headers.Remove("X-AspNetMvc-Version"); // 此项需要在 customHeaders 中删除 // HttpContext.Current.Response.Headers.Remove("X-Powered-By"); } }
在 web.config 中增加配置即可:
<system.webServer> <modules> <add name="IISHeaderRemoveModule" type="Namespace.IISHeaderRemoveModule,AssemblyName"/> </modules> </system.webServer>
但是不能实现全局配置,需要在每个站点下的 bin 目录中,增加上代码生成的 dll,可以考虑将 dll 增加到全局 GAC 中
若需要全局配置使用,应在 C:\Windows\System32\inetsrv\config\applicationHost.config 文件中配置,并将 dll 放置在某个公共文件夹中(如:C:\Windows\assembly)但未实现,参考链接:
https://stackoverflow.com/questions/1856696/how-do-i-manually-copy-assemblies-into-the-gac
2、或者可以直接使用网上已经实现的开源项目:
https://github.com/Dionach/StripHeaders
下载安装即可,但是好像只支持 Windows Server 2008 到 Windows Server 2016,即 IIS 7.0 - IIS 8.5
若安装后没有效果,可以尝试执行以下命令:
C:\Windows\System32\inetsrv\appcmd.exe install module /name:StripHeadersModule /image:%windir%\system32\inetsrv\stripheaders.dll /add:true /lock:true
执行后重启 IIS 即可。
参考:https://www.dionach.com/easily-remove-unwanted-http-headers-in-iis-7-0-to-8-5/
https://www.cnblogs.com/xuyufeng/p/14134135.html
3、在 IIS 10.0 中,新增了一个属性 removeServerHeader,可以直接去掉 Server 信息
<system.webServer>
<security>
<requestFiltering removeServerHeader="true">
<!-- other request filtering stuff -->
</requestFiltering>
</security>
</system.webServer>
需要注意,此属性不兼容更低版本,低版本会直接报错,需要兼容性的系统慎用。
输了你,赢了世界又如何...
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
2013-04-23 学习使用Bing Maps Silverlight Control(六):自定义“鹰眼”地图