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

需要注意,此属性不兼容更低版本,低版本会直接报错,需要兼容性的系统慎用。

更多参考:https://www.petefreitag.com/blog/iis-server-header/

posted @   不是豆豆  阅读(525)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
历史上的今天:
2013-04-23 学习使用Bing Maps Silverlight Control(六):自定义“鹰眼”地图
友情链接:迷途


点击右上角即可分享
微信分享提示