MVC 4 - Razor - “从客户端检测到潜在危险的request.form值”
我的视图中有一个i-Frame链接到外部网站。这个网站需要一些值和一些配置设置。作为这些配置设置的一部分是“CallBackURL”。此外部网站发布到此CallBackUrl。MVC 4 - Razor - “从客户端检测到潜在危险的request.form值”
我将CallBackURL指定为我的控件上的操作。
查看代码
<form id="testForm" method="post" target="testFrame">
<input type="hidden" name="RequestXML" ID="RequestXML" value="<Request><RedirectURL>Account/TokenRequest</RedirectURL></Request>"
</form>
<iframe id="testFrame" name="testFrame" frameborder="0" style="width:1000px;height:500px"></iframe>
控制器代码
[HttpPost]
[ValidateInput(false)]
public ActionResult TokenRequest()
{
if (Request.Form["ResponseXML"] != null)
ViewBag.ResponseXML = Request.Form["ResponseXML"];
return PartialView();
}
我的控制器操作中,我得到以下错误:
“从客户端检测到有潜在危险的Request.Form值”我也在webconfig中设置了这个
<httpRuntime requestValidationMode="2.0" />
<pages validateRequest="false"...
我在做什么错?
编辑 我在编辑错误的web.config文件。我将它添加到views文件夹中的web.config。一旦我将它改变到正确的位置,它就开始工作。
尝试使用模型而不是直接使用html控件。并使用AllowHtml属性。
型号:
public TokenRequestModel
{
[AllowHtml]
public string ResponseXML {get;set;}
}
操作:
[HttpPost]
public ActionResult TokenRequest(TokenRequestModel model)
{
if (!string.IsNullOrEmpty(model.ResponseXML))
ViewBag.ResponseXML = model.ResponseXML;
return PartialView();
}
将上述溶液不MVC4为我工作。对我而言,只有在行动之上放置一个属性才行。无需更改您的web.config或添加AllowHtml属性。
[HttpPost]
[ValidateInput(false)]
public ActionResult TokenRequest(TokenRequestModel model)
{
if (!string.IsNullOrEmpty(model.ResponseXML))
ViewBag.ResponseXML = model.ResponseXML;
// ...
这对我有用,但我使用参数化的sql sprocs将数据传递到数据库,所以我不担心sql注入等;然而,我想你只是想警告用户他们需要提供他们自己的验证实现...再次不是我的Intranet应用程序和有限的用户组关注的问题。 – 2015-07-15 17:07:55
您可以尝试
[HttpPost]
public ActionResult TokenRequest()
{
if (Request.Unvalidated().Form["ResponseXML"] != null)
ViewBag.ResponseXML = Request.Unvalidated().Form["ResponseXML"];
return PartialView();
}
我认为未经验证的()可以将错误消失,无需编辑webconfig
这也许是antixsser捕捉尖括号。尝试使用Server.HTMLEncode Request.Form语句。 – 2012-04-25 18:54:28
我试过了,它不起作用。我仍然得到这个错误:从客户端检测到潜在危险的Request.Form值(ResponseXML =“
2012-04-25 19:01:19