【问题标题】:How to show the "A potentially dangerous Request.Form value was detected" view error如何显示“检测到潜在危险的 Request.Form 值”视图错误
【发布时间】: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>

&lt;html&gt;代码目前允许在表单控件中,按下提交按钮后不显示如下错误:

“/”应用程序中的服务器错误。

从 客户(名称="")。

描述: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


【解决方案1】:

应用程序正在做它应该做的事情。该字段不允许使用 HTML,因此如果有人发布 HTML,则会出现服务器错误。这是一个完全有效的回应。如果用户在处理请求数据,那么返回服务器错误是合适的。

【讨论】:

  • 没有服务器错误。用户可以输入无效数据。那就是问题所在。如何防止用户输入无效数据从而显示错误?
【解决方案2】:

您可以将此添加到您的帖子操作中,并将 htmlencode 添加到您的代码中

[ValidateInput(false)]

【讨论】:

  • 脚手架视图如何执行恶意代码检查?
猜你喜欢
  • 2011-03-30
  • 2011-03-07
  • 2016-03-21
  • 1970-01-01
  • 2011-11-09
  • 2012-05-29
相关资源
最近更新 更多