ASP.NET 4.5 客户端提交了一个可能危险的 Request.Form 值

9
我在用户控件上嵌入了一个所见即所得的编辑器,显然会进入一个网页。当我提交页面时,会出现“来自客户端的潜在危险的 Request.Form 值”的异常。在以前的 .NET 版本中,我只需关闭页面的 ValidateRequest。但是,在 .NET 4.5 中,似乎有一个 ValidateRequestMode 属性。当我将其设置为禁用时,仍然会出现错误。目前关于 .NET 4.5 错误的信息很少,有人知道解决方案吗?谢谢提前。

2
作为替代方案,您可以使用JavaScript在提交到服务器之前对wyswing编辑器的内容进行编码。这样,您就不需要禁用验证。 - m0s
我正在使用最新的TinyMCE编辑器(版本3.5.6),它具有内置选项来编码内容,我已经在使用了。所以这应该对其进行编码。但是我仍然收到错误信息。 - Ricketts
2个回答

15
我找到了问题所在。它与TinyMCE编辑器有关,需要在后台尝试读取和发布内容之前对其进行编码。解决方案是按照m0s的建议通过JavaScript进行编码。TinyMCE有一个内置选项可以设置。
encoding: "xml"

我之前设置了一些东西,但它没有编码内容中的撇号。为了解决这个问题,您需要在页面上的TinyMCE init函数中添加以下内容:

TinyMCE 3.x

setup: function (ed) {
    ed.onSaveContent.add(function (i, o) {
        o.content = o.content.replace(/&#39/g, "&apos");
    });
}

TinyMCE 4.x

setup: function(editor) {
    editor.on("SaveContent", function(i) {
        i.content = i.content.replace(/&#39/g, "&apos");
    });
}

我在这里找到了解决方案:http://blog.tentaclesoftware.com/archive/2012/05/21/asp-net-4-0-tinymce-and-ldquoa-potentially-dangerous-request.aspx

希望能对某人有所帮助!


1
你不能像这样后加载文本。TinyMCE无法处理它们。 - Akbari

1
我通过在内容属性 public virtual string content{ get; set; } 前添加 [AllowHtml] 解决了这个问题。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接