Можем ли мы установить ValidatInput (false) только для одного элемента? - PullRequest
0 голосов
/ 26 ноября 2010

Легко настроить наше действие, чтобы не проверять ввод, просто подключив атрибут, как

[HttpPost, ValidateInput(false)]
public ActionResult Signup(SignupModel model)
{
    ... 
}

Но мне было интересно, есть ли способ сделать это только в одном поле формы?и не все они в фактических <form>

или я должен использовать это, а затем беспокоиться о правильном кодировании всех других полей?

Ответы [ 2 ]

0 голосов
/ 26 ноября 2010

Используя MVC3, атрибут можно применить к Model, указав SkipRequestValidation.

0 голосов
/ 26 ноября 2010

Вы должны не полагаться на ValidateInput для «кодирования» ваших значений. Он не кодирует значения - он просто полностью отвергает некоторые значения. И даже если вы используете его, вы все равно должны кодировать все свои значения , которые вводятся пользователем и отображаются на сайте любым образом.

На самом деле, из-за этого - я никогда не использовал это подтверждение самостоятельно. Например, если бы все, что я делал, полагалось на эту проверку, люди не смогли бы вводить некоторые очень простые вещи в такие формы, как эта, например, пытаясь показать пример HTML.

Но даже в документации MSDN и каждой прочитанной мной книге сказано, что проверка ASP.NET там не защищает вас от любого возможного злонамеренного ввода. По сути, вы можете не полагаться на него, чтобы защитить своих пользователей. Вы по-прежнему должны кодировать значения, которые вы отображаете (и вы должны кодировать их только так, как вы их отображаете, в противном случае вы получите все виды ошибок отображения, когда вы дважды закодировали вещи)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...