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

leo*_*ora 6 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" %>
Run Code Online (Sandbox Code Playgroud)

gri*_*egs 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;
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 使用`HttpUtility`进行`HtmlEncode`/decode而不是编写自己的错误有什么问题? (5认同)
  • 如果使用VS2010和ASP.NET MVC2,值得注意两件事.首先,您需要在web.config文件的<system.web>中放置<httpRuntime requestValidationMode ="2.0"/>,以使[ValidateInput(false)]属性起作用.其次,上述编码器太天真,不可靠. (4认同)

小智 5

尝试[AllowHtml]在模型中使用该属性.

class MyModel{
 [AllowHtml]
 public string Content{get;set;}
}
Run Code Online (Sandbox Code Playgroud)