2015-03-31 132 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> 

    ...