【发布时间】:2015-03-05 12:05:03
【问题描述】:
我正在编写一个 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>
}
我可以在ExpiryMonth表单控件中输入一些HTML代码如下:
<html>
<html>代码目前允许在表单控件中,按下提交按钮后不显示如下错误:
“/”应用程序中的服务器错误。
从 客户(名称="")。
描述:ASP.NET 检测到请求中的数据是 潜在危险,因为它可能包含 HTML 标记或脚本。 数据可能代表试图危及您的安全 应用程序,例如跨站点脚本攻击。如果这种类型 输入在您的应用程序中是合适的,您可以将代码包含在 网页明确允许它。有关详细信息,请参阅 http://go.microsoft.com/fwlink/?LinkID=212874.
异常详细信息:System.Web.HttpRequestValidationException:A 从客户端检测到具有潜在危险的 Request.Form 值 (name="")。
来源错误:
在执行过程中产生了一个未处理的异常 当前的网络请求。有关原产地和位置的信息 可以使用下面的异常堆栈跟踪来识别异常。
如何防止用户输入恶意代码?当我用视图搭建控制器时(我上面的代码不是从脚手架完成的),会显示上述错误。
提前致谢。
编辑
我不想让用户输入 HTML 代码,我希望阻止用户输入 HTML 代码。脚手架视图如何做到这一点?我需要向视图/控制器添加什么代码,以便在视图中输入 HTML 代码时显示错误页面?
【问题讨论】:
标签: c# asp.net-mvc-5 http-request server-error asp.net-mvc-views