可以很容易地設定我們的行動不驗證輸入剛剛掛鉤像我們可以只爲一個元素設置ValidatInput(false)嗎?
[HttpPost, ValidateInput(false)]
public ActionResult Signup(SignupModel model)
{
...
}
的屬性,但我想知道,有沒有辦法,只在短短的一個表單域做到這一點?而不是所有的實際<form>
或者,我不得不使用這個,然後擔心編碼適當的所有其他領域?
可以很容易地設定我們的行動不驗證輸入剛剛掛鉤像我們可以只爲一個元素設置ValidatInput(false)嗎?
[HttpPost, ValidateInput(false)]
public ActionResult Signup(SignupModel model)
{
...
}
的屬性,但我想知道,有沒有辦法,只在短短的一個表單域做到這一點?而不是所有的實際<form>
或者,我不得不使用這個,然後擔心編碼適當的所有其他領域?
您應該不是依靠ValidateInput
'編碼'您的值。它不會對值進行編碼 - 它只是完全拒絕一些值。即使你使用它,仍然必須編碼用戶輸入並以任何方式顯示在站點上的所有值。
事實上,正因爲如此 - 我從未使用過這種驗證。例如,如果我所做的只是依賴驗證,那麼人們就不能像這樣的形式輸入一些非常基本的東西,比如試圖展示示例HTML。
但即使MSDN文檔和我讀過的每本書都表示,ASP.NET驗證確實有而不是可以保護您免受任何可能的惡意輸入。所以基本上,你可以不是依靠它來保護你的用戶。您仍然必須對您顯示的值進行編碼(並且您應該只在顯示它們時對其進行編碼,否則最終會出現各種顯示錯誤,因此您會對雙重編碼的東西進行編碼)
使用MVC3屬性可以通過指定SkipRequestValidation應用於Model。
事情是,我只需要在表單的一個字段中接受html代碼,我不知道要採取什麼樣的路徑。 – balexandre 2010-11-26 00:32:28
不要在任何地方使用「驗證」;不管你是否使用內置驗證,你仍然*必須對其他字段進行編碼。但只要確保你在爲其他字段編碼。 – 2010-11-26 00:35:17