2015-03-31 32 views
2

为了更好地隐藏用户的信息,我试图从标准的ASP.NET错误屏幕中删除版本信息部分。是否可以从ASP.NET 4.0中的服务器错误页面中删除信息?

自定义错误已打开,但在某些情况下,如果您设法在控制之外获得错误(服务器问题可能?),那么您可以访问YSOD。我试着改变web.config以包含httpruntime设置,您可以在其中设置enableVersionHeader为false,但版本信息仍然通过。

此外,在Application_PreSendRequestHeaders方法中,我试图从响应头中删除“X-AspNet-Version”,但由于web.config设置该头不存在。

我想在这种情况下甚至可能会这样,否则信息会一直存在吗?

+0

难道不是专注于修复错误而不是担心它们的外观吗? – 2015-03-31 16:21:57

+0

错误是AppFabric所以它很难直接修复它们 – loxdog 2015-04-09 08:10:06

回答

0

问题可能是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头被设置。

+0

这解决了我的显示IIS服务器错误消息(例如,用户尝试击中web.config或404's)与显示我的catch全部错误屏幕的应用程序的个人问题。谢谢! 但是我不会赞成,因为我的问题不可能是问题试图解决的1:1匹配。 – billyciam 2016-07-26 14:10:11

2

要隐藏.NET错误页面(不是一般的IIS错误,如403,404等)的.NET版本信息,请使用空元素没有的defaultRedirect属性:

<configuration> 
    <system.web> 
     <customErrors mode="RemoteOnly"/> 
    </system.web> 
</configuration> 

前:

Before

后:

After

要除去X-ASPNET-版HTTP响应报头中,设置enableVersionHeader的httpRuntime元件:

<configuration> 
    <system.web> 
     <httpRuntime enableVersionHeader="False"/> 
    </system.web> 
</configuration> 
1

在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> 

    ... 
相关问题