是否可以从ASP.NET 4.0中的服务器错误页面中删除信息?
为了更好地隐藏用户的信息,我试图从标准的ASP.NET错误屏幕中删除版本信息部分。是否可以从ASP.NET 4.0中的服务器错误页面中删除信息?
自定义错误已打开,但在某些情况下,如果您设法在控制之外获得错误(服务器问题可能?),那么您可以访问YSOD。我试着改变web.config以包含httpruntime设置,您可以在其中设置enableVersionHeader为false,但版本信息仍然通过。
此外,在Application_PreSendRequestHeaders方法中,我试图从响应头中删除“X-AspNet-Version”,但由于web.config设置该头不存在。
我想在这种情况下甚至可能会这样,否则信息会一直存在吗?
问题可能是IIS正在渲染错误页面而不是ASP.NET。试着改变你的web.config的system.webServer部分是这样的:
<system.webServer>
<httpErrors errorMode="Custom" existingResponse="Replace">
<remove statusCode="500" subStatusCode="-1" />
<error statusCode="500" subStatusCode="-1" responseMode="ExecuteURL" path="/500.aspx" />
</httpErrors>
</system.webServer>
此外,检查你的IIS设置,这可能在X-AspNet-Version
头被设置。
这解决了我的显示IIS服务器错误消息(例如,用户尝试击中web.config或404's)与显示我的catch全部错误屏幕的应用程序的个人问题。谢谢! 但是我不会赞成,因为我的问题不可能是问题试图解决的1:1匹配。 – billyciam 2016-07-26 14:10:11
要隐藏.NET错误页面(不是一般的IIS错误,如403,404等)的.NET版本信息,请使用空元素没有的defaultRedirect属性:
<configuration>
<system.web>
<customErrors mode="RemoteOnly"/>
</system.web>
</configuration>
前:
后:
要除去X-ASPNET-版HTTP响应报头中,设置enableVersionHeader上假的httpRuntime元件:
<configuration>
<system.web>
<httpRuntime enableVersionHeader="False"/>
</system.web>
</configuration>
在IIS这个问题是可以解决改变 “HTTP响应头”配置
要删除X-ASPNET-版,在叔他web.config中查找/创建<system.web>
并添加:
<system.web>
<httpRuntime enableVersionHeader="false" />
...
要删除X-AspNetMvc-版本,去Global.asax中,找到/创建Application_Start
事件,并添加一行,如下所示:
protected void Application_Start()
{
MvcHandler.DisableMvcResponseHeader = true;
}
要删除X供电,通过,在网上。config查找/创建<system.webServer>
并添加:
<system.webServer>
<httpProtocol>
<customHeaders>
<remove name="X-Powered-By" />
</customHeaders>
</httpProtocol>
...
难道不是专注于修复错误而不是担心它们的外观吗? – 2015-03-31 16:21:57
错误是AppFabric所以它很难直接修复它们 – loxdog 2015-04-09 08:10:06