将HTML传递给控制器​​时,替代ValidateInput(“false”)

时间:2010-01-14 05:02:48

标签: asp.net-mvc validation

我有一个非常简单的ASP.NET MVC页面,并且正在使用TinyMCE来允许用户输入注释。但是,当我将数据传递给控制器​​时,我收到以下错误消息:

  

潜在危险的Request.Form   从客户端检测到值

一致认为应该在Action方法上设置ValidateInput(“false”),但不知何故,这对我来说并不合适。我试图通过命令我的动作方法和通过我的ActionExecitomgContext ActionParameters消毒数据来拦截这个,但是这个错误一次又一次地发生。有没有人知道如何通过(或正确拦截)内容而不禁用ValidateInput

1 个答案:

答案 0 :(得分:2)

你有没有具体说明为什么它不合适?接受HTML的一个操作的ValidateInput(“false”)是正确的方法。输入验证是一个旧的ASP.NET功能,默认情况下为安全性而开启,但就像一个大锤。它不了解允许的HTML的细微差别。

对于这一个操作方法,您可以编写自己的ValidateSafeHtmlAttribute操作过滤器,并将其放在方法上。也许那个内部将ValidateInput设置为false,然后根据您的场景进行自己的验证。这是我的建议。