ASP MVC开发的Web默认情况下会在请求的回应中暴露Server、X-AspNet-Version、X-AspNetMvc-Version、X-Powered-By等相关服务端信息,Session ID对应的Cookie也会以“ASP.NET_SessionId”默认命名,公开这些敏感信息会存在一定的安全风险。
X-SourceFiles标头用于被IIS / IIS Express中某些调试模块理解,它包含到磁盘上源文件的base64编码路径,并用于将页面生成的输出链接回该源文件,只在本机请求下生成,应用程序部署到实际服务器时,并不会出现,无需担心!
https://www.cnblogs.com/xixifusigao/p/3953279.html
https://www.orcode.com/question/1214535_kf9ca5.html


(以下转载自:https://www.cnblogs.com/namexiaoqi/p/10981224.html)
在Global.asax文件的Application_Start方法中添加:
MvcHandler.DisableMvcResponseHeader = true;
在Global.asax文件中添加:
- protected void Application_PreSendRequestHeaders(object sender, EventArgs e)
- {
- var app = sender as HttpApplication;
- if (app == null || app.Context == null)
- {
- return;
- }
-
- // 移除 Server
- app.Context.Response.Headers.Remove("Server");
- }
在Web.config文件中添加:
- <system.webServer>
-
- <httpProtocol>
- <customHeaders>
-
- <clear />
-
- <add name="X-Powered-By" value="bbb.com" />
- customHeaders>
- httpProtocol>
- system.webServer>
在Web.config文件中
<httpRuntime enableVersionHeader="false" />
在Web.config文件中设置
(注意,设置完后浏览器要清理下缓存的cookie, 不然设置后依然还是会附带缓存的“ASP.NET_SessionId” Cookie)
- <system.web>
- <sessionState cookieName="J_SessionId" />
- system.web>
- 未清理缓存的情况下,Cookie中依然附带前面缓存的“ASP.NET_SessionId”,但这只是个缓存问题:
- 清除浏览器缓存的“ASP.NET_SessionId”Cookie,之后不再附带:
- 清除浏览器Cookie缓存后,请求将不再附带“ASP.NET_SessionId”显示的Cookie, 而是成功以伪装的J_SessionId命名: