验证检测到危险的客户端输入 - 从ASP.NET中的TinyMCE发布

时间:2009-08-04 02:21:09

标签: asp.net-mvc scripting tinymce

当我在ASP.NET MVC视图中从TinyMCE发帖时,我收到此错误。

错误:

  

请求验证检测到潜在危险的客户端输入值,并且请求的处理已中止

从谷歌搜索,它说只是在我做的顶部的Page指令中添加了validateRequest,但我仍然得到这个错误。如您所见,以下是我在视图中的代码:

<%@ Page validateRequest="false" Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage" %>

5 个答案:

答案 0 :(得分:9)

试试这个解决方案。只需添加到TinyMce控件

tinyMCE.init({
...
encoding : "xml"
});

http://wiki.moxiecode.com/index.php/TinyMCE:Configuration/encoding

http://blog.tentaclesoftware.com/archive/2010/07/22/96.aspx

答案 1 :(得分:5)

使用装饰器[ValidateInput(false)]

然后,您将需要编写HTMLEncode方法以确保其安全。

如果您希望我发布我使用的那个,请告诉我。

添加了我使用的编码

    public static class StringHelpers
{
    public static string HtmlEncode(this string value)
    {
        if (!string.IsNullOrEmpty(value))
        {
            value = value.Replace("<", "&lt;");
            value = value.Replace(">", "&gt;");
            value = value.Replace("'", "&apos;");
            value = value.Replace(@"""", "&quot;");
        }
        return value;
    }

    public static string HtmlDecode(this string value)
    {
        if (!string.IsNullOrEmpty(value))
        {
            value = value.Replace("&lt;", "<");
            value = value.Replace("&gt;", ">");
            value = value.Replace("&apos;", "'");
            value = value.Replace("&quot;", @"""");
        }

        return value;
    }
}

答案 2 :(得分:5)

尝试使用模型中的[AllowHtml]属性。

class MyModel{
 [AllowHtml]
 public string Content{get;set;}
}

答案 3 :(得分:0)

令人讨厌的是,他们似乎已经删除了编码:xml选项。

我最终使用来自this answer的javascript HTML编码函数,在我的提交按钮上,我使用tinymce的getContent和setContent方法在表单提交之前对textarea的内容进行编码,

答案 4 :(得分:0)

我遇到了同样的问题。我不想禁用ASP.NET MVC验证功能,所以我一直在寻找,直到我达到这个解决方案:

在tinyMCE插件代码中编码您的内容(我使用旧版本)

tinyMCE.init({
   ...
   encoding: "xml"
});

在此之后,我没有再收到应用程序验证错误。然后当我编辑我的表单时,我想出了另一个问题,代码会出现html标签

<strong>My input value</strong>

而不是

我的输入值

所以,在控制器上获取我的值时,我必须解码该字段的html,如下所示:

...    
entity.field = HttpUtility.HtmlDecode(entity.field);