ASPMVC - потенциально опасное значение Request.Form было обнаружено от клиента - PullRequest
0 голосов
/ 04 сентября 2018

У меня есть приложение ASP.NET MVC, затем у меня есть форма, в которой пользователь может создать пользователя и пароль.

Пользователь получил ошибку со следующим сообщением:

A potentially dangerous Request.Form value was detected from the client (Password="1e.q<Tm6").

Пользователь создал следующий пароль:

1e.q<Tm6

И я предполагаю, что сервер отклонил строку из-за символа <.

Это ожидаемое поведение? эти символы обычно не допускаются при вводе паролей? Если это разрешено, как вы можете сохранить свой контроллер в безопасности, но разрешить эти символы?

Спасибо

Ответы [ 2 ]

0 голосов
/ 04 сентября 2018

Используйте атрибут [ValidateInput (false)] * на контроллере для решения:

[HttpPost]     
[ValidateInput(false)]
[ValidateAntiForgeryToken]
public ActionResult Create(Product model)

Если это содержимое типа HTML, отправляемое на сервер, используйте метод WebUtility.HtmlEncode для кодирования строки и WebUtility.HtmlDecode для чтения.

0 голосов
/ 04 сентября 2018

Да. Это ожидаемое поведение. Причина, по которой вы получаете сообщение об ошибке, заключается в том, что при отправке формы инфраструктура mvc asp.met проверит тело запроса на предмет наличия потенциально опасного содержимого в виде разметки HTML ( Подумайте о внедрении скрипта ). Если он обнаружит опасный контент, модуль проверки запросов выдаст ошибку. Это по замыслу

Вы можете применить атрибут AllowHtml к свойству модели представления, чтобы платформа проверки запросов игнорировала это конкретное свойство при выполнении шага проверки запроса.

public class LoginVM
{
   public string UserName { set;get;}

   [AllowHtml]
   public string Password { set; get; }
}

Приведенный ниже текст взят с официальной страницы msdn, и я думаю, что это актуально.

Настоятельно рекомендуется, чтобы ваше приложение явно проверило все модели, в которых вы отключаете проверку запросов, чтобы предотвратить сценарий эксплойты.

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