2011-05-21 18 views
2

我明白爲什麼會出現異常「」一個潛在危險的Request.Form值...「以及爲什麼它很有用我想在我的頁面上放置客戶端驗證器如果輸入包含<> ON =或任何其他可能觸發此異常。問題是,我不知道觸發異常的所有字符或字符串。是否有一些觸發器列表在哪裏?我似乎無法看到找到它,只有問題/答案有關的例外本身,以及如何處理它。ASP.NET中用於ValidateRequest的XSS觸發器的完整列表

此外,如果請求來自外部來源,而不是我的表格,我該如何告訴,我該如何處理它? Asp.NET會自動執行此操作嗎?隱藏字段可以工作還是黑客可以解決這個問題?

您可以給的信息(包括鏈接)表示讚賞。

UPDATE:

任何有興趣,我想出了一個正則表達式,它可以匹配這些字符的字符串。

(^((?=.*&#).*)$)|(^((?=.*<).*)$)|(^((?=.*>).*)$) 

然而,當你提交一個表單,偶數場是比點擊傳遞到服務器的按鈕獨立的驗證組,如果任何無效的文本是在這些領域,你得到的異常。所以,我決定使用Ajax FilteredTextBoxExtender從TextBoxes中阻止這些字符。另一種選擇是在所有TextBox上使用JavaScript的關鍵字功能。但是,智能用戶可以禁用這兩者的JavaScript,並且它們不完全可靠。

+0

即使您在客戶端驗證您仍然必須在服務器端進行驗證。但我不確定你想達到什麼。 – 2011-05-21 22:27:34

回答

2

看起來像這是本網站類似問題的複製品。 This question有幾個答案,人們通過代碼反映了實際的觸發器。

在回答您的其他問題時,如果無效輸入來自某個未明確驗證的請求(例如另一個站點),它將在代碼的服務器端啓動ValidateRequest,並且調用者將看到500錯誤或您的自定義錯誤頁面(如果啓用)。假設您允許來自其他服務器的請求(請參閱CSRF)。如果您不想允許來自其他服務器的請求,則可以檢查請求的引用者,並只允許來自您自己站點的請求。

+0

謝謝。我沒有在這裏看到其他問題,但它很好地分解了它。 :) – Lifes 2011-05-22 01:18:37