久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

詳解Asp.net web.config customErrors 如何設置

 CoCO-Ebook 2019-01-30

customErrors也經常在開發(fā)部署中看到<customErrors mode="Off" />,設置這樣可以在頁面上看到詳細的錯誤信息,。但也為黑客提供了攻擊的線索,。

customErrors

該節(jié)點有三種可選的設置項

  1. On:服務器開發(fā)的最安全選項,因為它總是隱藏錯誤提示信息,。
  2. RemoteOnly:向大多數用戶展示一般的錯誤信息,,但向擁有服務器訪問權限的用戶展示完整的錯誤提示信息,。換句話說,,僅向遠程客戶端端顯示自定義錯誤,并向本地主機顯示 ASP.NET 錯誤,。默認值,。
  3. Off:最容易受到攻擊的選項,它向訪問網站的每個用戶展示詳細的錯誤提示消息,。

詳細的錯誤信息可能會暴露應用程序的內部結構,,比如如果寫的sql語句中報錯,可能會暴露數據表,,以及sql語句,,這是非常不安全的。在Off設置下的網站,,黑客會不斷的嘗試,,傳遞不同的參數,,使你的網站出錯,然后暴露你的應用程序的內部結構,。

mode=Off

比如:

1
2
3
4
5
6
7
<system.web>
  <authentication mode="None" />
  <compilation debug="true" targetFramework="4.5" />
  <httpRuntime targetFramework="4.5" />
  <customErrors mode="Off" defaultRedirect="error">
  </customErrors>
 </system.web>

在TestAction中直接拋出一個異常,,那么我們可以看到與下面類似的黃頁

在黃頁上面可以看到,頁面對應邏輯的堆棧信息,,進而暴露項目結構信息,。非常的不安全。

那么如果是mode=Off,,并且在事件Application_Error中記錄并清除錯誤,,會看到什么結果?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
protected void Application_Error(object sender, EventArgs e)
    {
      var context = HttpContext.Current;
      if (context != null)
      {
 
        Exception objErr = context.Server.GetLastError();
        if (objErr != null)
        {
          string err = "Error Caught in Application_Error event/n" + "Error in:"
+ Request.Url.ToString() + "/nError Message:" + objErr.Message.ToString() +
       "/nStack Trace:" + objErr.StackTrace.ToString();
        ,、,、、,、,、日志邏輯
          Server.ClearError();
        }
      }
    }
1
2
<customErrors mode="Off" defaultRedirect="Error">  
</customErrors>

defaultRedirect 指定發(fā)生錯誤時瀏覽器指向的默認 URL。如果沒有指定 defaultRedirect,,則會顯示一般性錯誤,。URL 既可以是絕對的(例如 http://www.***.com/ErrorPage.htm),也可以是相對的,。相對 URL(如 /ErrorPage.htm)是相對于指定 defaultRedirect 的 Web.config 文件而言的,,而不是針對產生錯誤的網頁。以波形符 (~) 開頭的 URL(如 ~/ErrorPage.htm)表示所指定的 URL 是相對于應用程序根路徑而言的,。

通過上面的操作,,如果設置Off,并且在Application_Error事件中捕獲異常,,并 Server.ClearError(),,那么如果報錯,在前端頁面就會看到空白的頁面,。

通過這個也可以說明,,如果應用程序出錯,先觸發(fā)的Application_Error事件,,ClearError之后,,那么在頁面上就看不到結果了。

mode=On

在設置On模式情況下,,如果應用程序發(fā)生錯誤,,會跳轉到自定義的錯誤頁,這里使用了defaultRedirect屬性,,并沒有配置 <error statusCode="500" redirect="error"/>

mode=RemoteOnly

通過字面意思,,僅僅遠程,,僅僅遠程什么呢?可以看下例子,。目前所在編碼環(huán)境,,通過vs調試狀態(tài),相對遠程要訪問的用戶,,可以將本機當做服務器,。那么這就是本地,遠程訪問的瀏覽器就是Remote,。

可以看到,,在服務器端,訪問仍然能看到黃頁,,也就是上面所說的ASP.NET錯誤,。那么我們將站點部署在服務器,然后在本地訪問會出現什么情況呢,?

通過客戶端訪問服務器的url,,則會跳轉到默認的自定義錯誤頁面。那么在服務器端又是什么情況呢,?

說明: 僅向遠程客戶端端顯示自定義錯誤,,并向本地主機顯示 ASP.NET 錯誤

 總結

所以,不要在生產環(huán)境中將customErrors關閉,。 推薦開啟RemoteOnly或者On并定義自定義的錯誤頁面,。

    本站是提供個人知識管理的網絡存儲空間,所有內容均由用戶發(fā)布,,不代表本站觀點,。請注意甄別內容中的聯(lián)系方式、誘導購買等信息,,謹防詐騙,。如發(fā)現有害或侵權內容,請點擊一鍵舉報,。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多