2011-09-02 86 views
3

我得到“潜在危险的Request.Form值”

从客户端

当我部署我的应用程序(错误仍无法检测到有潜在危险的Request.Form值的误差当我通过localhost运行时发生)。

它在提交表单时发生,因为其中一个字段包含HTML。我在模型中添加了[AllowHtml],该模型对应于违规表单字段,但这似乎不起作用。

由于显而易见的原因,我宁愿不在行为方法上使用[ValidateInput(false)],而且无论如何,这似乎也不起作用。

有没有其他需要做的配置?我已阅读,添加

<httpRuntime requestValidationMode="2.0"/> 

到网络配置文件可以修复它,但我又不想加入,因为我仍然希望我的应用程序的其他部分的安全验证。

任何想法?

回答

8

[AllowHtml]需要您添加 <httpRuntime requestValidationMode="2.0"/>(设置这个值并不意味着你没有得到安全验证,它只是验证模式)。该网站的其他部分将是安全的,您只对视图模型上的特定属性禁用验证。

[ValidateInput(false)]会工作,但正如您所说,它可能不太安全,因为它禁用所有属性的验证。

我会坚持[AllowHtml]


UPDATE:

两个[AllowHtml][ValidateInput(false)]工作开箱即用的ASP.NET MVC 3没有在web.config中添加<httpRuntime requestValidationMode="2.0"/>的要求。这是必要的,ASP.NET MVC 2的运行ASP.NET 4.0

在这里有一个例子:

视图模型:

public class MyViewModel 
{ 
    [AllowHtml] 
    public string Text { get; set; } 
} 

控制器:

public class HomeController : Controller 
{ 
    public ActionResult Index() 
    { 
     var model = new MyViewModel 
     { 
      Text = "<html/>" 
     }; 

     return View(model); 
    } 

    [HttpPost] 
    public ActionResult Index(MyViewModel model) 
    { 
     return View(model); 
    } 
} 

查看:

@model MyViewModel 
@using (Html.BeginForm()) 
{ 
    @Html.TextAreaFor(x => x.Text) 
    <input type="submit" value="OK" /> 
} 

提交表单时不会引发异常。

+0

好吧,那么是否使用允许在没有应用程序抱怨的情况下提交HTML? – MichaelS

+0

@MichaelS,正如我所说'[AllowHtml]'需要你添加它才能工作。另一种方法是在你的动作中使用'[ValidateInput(false)]'属性。 –

+0

它没有提到要求在下面的教程的XSS部分补充一点:http://www.pluralsight-training.net/microsoft/players/PSODPlayer.aspx?author=scott-allen&name=mvc3-building-security&mode =实况剪辑= 0&当然= aspdotnet-MVC3-介绍,你可以去这里:http://www.asp.net/mvc为了记录在案,我的模型结合,因为它表明在视频... – MichaelS

相关问题