關於在ASP.NET MVC中驗證/清除用戶輸入的最佳實踐的任何建議。看來ValidateInput幾乎總是需要設置爲False,因爲它不能在MVC框架內處理(甚至在觸發Action方法之前拋出錯誤)。驗證ASP.NET MVC中的輸入
那麼應如何驗證惡意輸入的輸入。我們是否需要手動篩選每個輸入並檢查它是否有字符,如<,>,「等 如果我們只希望允許某些類型的輸入,如標籤但禁止輸入和其他輸入,那麼該如何?這必須是相當常見的要求現在的Web應用程序,但我看不到太多的ASP.NET MVC自動完成這個。
是的,我明白了。但是,允許可能有害的輸入到數據庫中並不是一個好主意。不能保證當UI改變時它不會被錯誤輸出。當然,首先允許危險的輸入是不可接受的。 如果簡單地允許輸入該類型的輸入並將alert('foo')顯示爲輸出文本,則它對網絡來說看起來不太好。 – Judo
@Judo,我不同意你的看法。只需將用戶輸入原樣存儲到數據庫中即可。只要您正確地存儲它,關係數據庫就不會關心有害輸入。相信我,如果您在將用戶輸入存儲到數據庫之前開始修改用戶輸入,那麼您將遇到的問題多於您嘗試解決的問題。所以如果你遵循我在答案中提供的兩條基本規則,你是安全的。 –
@Judo - 要考慮的另一件事是,很難驗證傳入的數據是否每年都會出現無數的javascript漏洞。你基本上會在戰鬥中失敗。只需使用Razor或<%;幾乎可以保證你不會遇到任何這些問題,並且在努力方面更便宜。 – jfar