Как отобразить сообщение об ошибке "Обнаружено потенциально опасное значение Request.Form"
Я кодирую вид MVC 5, и у меня есть вопрос в отношении обнаружения HttpRequestValidationException
,
Вот код контроллера:
public async Task<ActionResult> TestView()
{
return View();
}
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<ActionResult> TestView(TestModelViewModel testModelViewModel)
{
return View("Index");
}
Вот код вида:
@model CanFindLocation.ViewModels.TestModelViewModel
@{
ViewBag.Title = "TestView";
}
<h2>TestView</h2>
@using (Html.BeginForm())
{
@Html.AntiForgeryToken()
@Html.ValidationSummary(true, "", new { @class = "text-danger" })
<div class="form-group">
<label class="control-label col-md-2" for="txtExpiryMonth">Expiry Month</label>
<div class="col-md-10" id="txtExpiryMonthDivClass">
<input class="form-control text-box single-line" id="txtExpiryMonth" name="ExpiryMonth" type="text" value="" />
</div>
</div>
<div class="form-group">
<div class="col-md-offset-2 col-md-10">
<input type="submit" value="Create" class="btn btn-default" />
</div>
</div>
}
Я могу ввести некоторый HTML-код следующим образом в элемент управления формы ExpiryMonth:
<html>
<html>
код в настоящее время разрешено находиться в элементе управления формы, и следующая ошибка НЕ отображается после нажатия кнопки отправки:
Ошибка сервера в приложении '/'
От клиента было обнаружено потенциально опасное значение Request.Form (name="").
Описание: ASP.NET обнаружил в запросе данные, которые потенциально опасны, поскольку могут содержать разметку HTML или сценарий. Данные могут представлять собой попытку поставить под угрозу безопасность вашего приложения, такую как атака с использованием межсайтовых сценариев. Если этот тип ввода подходит для вашего приложения, вы можете включить код на веб-странице, чтобы явно разрешить его. Для получения дополнительной информации см. http://go.microsoft.com/fwlink/?LinkID=212874.
Сведения об исключении: System.Web.HttpRequestValidationException: потенциально опасное значение Request.Form обнаружено клиентом (name="").
Ошибка источника:
Во время выполнения текущего веб-запроса было сгенерировано необработанное исключение. Информация о происхождении и местоположении исключения может быть идентифицирована с помощью трассировки стека исключений ниже.
Как я НЕ ПРЕДУПРЕЖДАЮ пользователей вводить вредоносный код? Когда я строю контроллер с представлениями (мой приведенный выше код НЕ сделан из лесов), отображается вышеуказанная ошибка.
Заранее спасибо.
РЕДАКТИРОВАТЬ
Я не хочу разрешать пользователю вводить HTML-код, я хочу запретить пользователю вводить HTML-код. Как лесные виды делают это? Какой код мне нужно добавить к моему представлению / контроллеру, чтобы при вводе кода HTML в представлении отображалась страница ошибки?
2 ответа
Приложение делает именно то, что должно делать. Поле не допускает HTML, поэтому, если кто-то публикует HTML, возникает ошибка сервера. Это совершенно правильный ответ. Если пользователь использует данные запроса, целесообразно вернуть ошибку сервера.
Вы можете добавить это к своему сообщению и добавить htmlencode в свой код
[ValidateInput(false)]