2010-01-14 50 views
2

我有一個非常簡單的ASP.NET MVC頁面,我正在使用TinyMCE來允許用戶輸入註釋。然而,當我的數據傳遞給控制器​​,收到以下錯誤消息:將HTML傳遞給控制器​​時替代ValidateInput(「false」)

從客戶端檢測到有潛在危險的Request.Form 值

的共識是,ValidateInput(「假「)應該設置在Action方法上,但不知怎的,這不適合我。我試圖通過我的ActionExecitomgContext ActionParameters來命令我的操作方法和清理數據來攔截這個,但是這個錯誤一直髮生。有誰知道一種方式來允許這個內容通過(或正確攔截它)而不禁用ValidateInput

+0

您對該屬性的特別關注是什麼? – Levi 2010-01-14 05:34:12

回答

2

你有具體的爲什麼它坐得不好嗎? ValidateInput(「false」)接受HTML的一個動作是正確的方法。輸入驗證是默認情況下默認爲安全的舊ASP.NET功能,但它就像一個大錘。它不瞭解允許的HTML的細微差別。

對於這種操作方法,您可以編寫自己的ValidateSafeHtmlAttribute操作篩選器,並將其放在方法上。也許那個內部封裝了一個ValidateInput設置爲false,然後自己驗證特定於你的場景。這是我的建議。

+0

感謝您的意見。我的擔心基本上就是當你移除大錘時留下的洞......只要有可能,我寧願讓內置的安全機制完好無損,而不是堵塞我自己的......看起來在這種情況下,特別是因爲validateInput充當IAuthorizationFilter ,我將不得不推出自己的。 再次感謝! – 2010-01-14 15:47:25

+0

那麼,在這種情況下,大錘正在保護法貝熱蛋並保護它,它會破壞你所保護的東西。 ;)(好吧,類比不好)。 您也可以查看http://www.codeplex.com/AntiXSS庫,您可以調用它來嘗試手動清理輸入。 – Haacked 2010-01-15 06:15:39