6

(ASP.NET 4.0 C#)

<httpRuntime requestValidationMode="2.0" />在 webconfig 中有我的。我有我validateRequest="false"的页面目录。

在一个页面上,我将一些数据 (html) 从 ckeditor (textarea) 发送到数据库。工作正常。在另一个页面上,我用数据库中的数据填充 ckeditor,然后对其进行更新(将其发回),并得到著名的“从客户端检测到潜在危险的 Request.Form 值”。

让我很困惑。唯一的区别是,在第二页上,数据被动态插入到 textarea 中,而在第一页上,textarea 在页面加载时为空。我在这里错过了什么吗?我很确定编码/解码没有任何意义,因为框架在我什至开始在后端搞乱它之前就停止了它。

4

3 回答 3

1

好吧,我还没有找到为什么它的行为方式的答案。但是,我找到了一种非常简单快捷的方法(+ 新的好处)。

有一个人做了一个 .net ckeditor 控件

http://cksource.com/forums/viewtopic.php?f=11&t=15882

你去吧。奇迹般有效。没有任何验证错误。

于 2011-04-08T21:08:25.633 回答
0

尝试在页面指令中将 ValidateRequest 设置为 false?更好的选择可能是使用 Microsoft Anti-Cross Site Scripting Library:

http://msdn.microsoft.com/en-us/library/aa973813.aspx

这里回答了一个类似的问题:

requestValidationMode 2.0 和 4.0 有什么区别

也可能是未安装 ASP.NET 4.0 或应用程序池未设置为在 4.0 下运行。

于 2011-04-04T20:56:11.143 回答
0

ValidationRequest="false" 仅适用于框架早期版本中的 .aspx 文件。

在 ASP.NET 4 中,它为任何 HTTP 请求的 BeginRequest 阶段之前的所有请求启用。因此请求验证适用于对所有 ASP.NET 资源的请求,例如 Web 服务调用和自定义 HTTP 处理程序。

要绕过这一新机制,必须创建自己的 RequestValidator 并更改 web.config 以使用此自定义验证器。

http://msdn.microsoft.com/en-us/library/system.web.util.requestvalidator.aspx

于 2011-04-06T14:58:06.280 回答