ValidateRequest 屬性

ValidateRequest 屬性2006-08-03 15:21  在 ASP.NET 1.1 中,@Page 指令上的 ValidateRequest 屬性被打開後,將檢查以確定用戶沒有在查詢字符串、Cookie 或表單域中發送有潛在危險性的 HTML 標記。如果檢測到這種情況,將引發異常並中止該請求。該屬性默認情況下是打開的;您無需進行任何操作就可以得到保護。如果您想允許 HTML 標記通過,必須主動禁用該屬性。
  <%@ Page ValidateRequest="false" %>
ValidateRequest不是 萬能的藥方,無法替代有效的驗證層。

  沒有任何關閉 ValidateRequest 的理由。您可以禁用它,但必須有非常好的理由;其中一條這樣的理由可能是用戶需要能夠將某些 HTML 張貼到站點,以便得到更好的格式設置選項。這種情況下,您應當限制所允許的 HTML 標記(<pre>、<b>、<i>、<p>、<br>、<hr>)的數目,並編寫一個正則表達式,以確保不會允許或接受任何其他內容。

以下是一些有助於防止 ASP.NET 遭受 XSS 攻擊的其他提示:

? 使用 HttpUtility.HtmlEncode 將危險的符號轉換爲它們的 HTML 表示形式。
 
? 使用雙引號而不是單引號,這是因爲 HTML 編碼僅轉義雙引號。
 
? 強制一個代碼頁以限制可以使用的字符數。
 


總之,使用但是不要完全信任 ValidateRequest 屬性,不要太過懶惰。花些時間,從根本上理解 XSS 這樣的安全威脅,並規劃以一個關鍵點爲中心的防禦策略:所有的用戶輸入都是危險的。
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章