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

时间:2011-01-07 22:45:40

标签: asp.net-mvc ckeditor ckfinder

我在我的MVC.NET网站上使用CKEditor / CKFinder作为wysiwyg编辑器。

我设置了[ValidateInput(false)],它在本地调试时有效,但在发布网站时收到以下错误:

A potentially dangerous Request.Form value was detected from the client (message="<p>
<em>Testing</e...").

任何人都可以解释为什么发布的网站与本地网站不同,特别是当我设置[ValidateInput(false)]时?

* 更新: *我正在使用.Net 3.5,所以不应该[ValidateInput(false)]开箱即用?

6 个答案:

答案 0 :(得分:24)

您是否尝试过设置htmlEncodeOutput属性?

> CKEDITOR.replace('editor1', {
>   htmlEncodeOutput: true });

这应该对输出进行编码,您应该可以避免设置requestValidationMode。

它的文档在这里:ckEditor documentation

答案 1 :(得分:7)

将此添加到您的web.config:

<httpRuntime requestValidationMode="2.0" />

答案 2 :(得分:0)

只需将一个注释添加到Post方法Action作为[ValidateInput(false)]

[HttpPost]
    [ValidateAntiForgeryToken]
    [ValidateInput(false)]
    public ActionResult Detail(ModelClass m)
    { return View(); }

答案 3 :(得分:0)

ValidateRequest =“ false” 将此添加到特定的页面。

示例:

 

答案 4 :(得分:0)

ValidateRequest="false"添加到您的页面:

<%@ Page Language="C#" AutoEventWireup="false" Codebehind="MyForm.aspx.cs" Inherits="Proj.MyForm" ValidateRequest="false"%>

或者如果使用.NET Framework 4.0(Visual Studio 2010),则添加到web.config

<httpRuntime requestValidationMode="2.0" />

答案 5 :(得分:0)

使用Request.Unvalidated["myTextBox"]

例如,

var text = Request.Unvalidated["myTextBox"];

其中“ myTextBox”是您要允许从中发布HTML的表单字段。