(ASP.NET 4.0 C#)
我在webconfig中有<httpRuntime requestValidationMode="2.0" />
。和
我在页面目录中有validateRequest="false"
。
在一个页面上,我将一些数据(html)从ckeditor(textarea)发送到数据库。工作良好。 在另一个页面上,我用数据库中的数据填充ckeditor,然后我更新它(发送回来),我得到着名的“从客户端检测到一个潜在危险的Request.Form值。”
让我很困惑。唯一的区别是在第二页上数据被动态插入到textarea中,在第一页上textarea在pageload上是空的。我错过了什么吗?我很确定编码/解码没有任何意义,因为框架在我甚至可以在后端开始搞乱之前就停止了它。
答案 0 :(得分:1)
好吧,我还没有找到答案,说明它为什么会这样。但是,我找到了一个非常简单快捷的方法(+新的好处)。
Theres是一个制作.net ckeditor控件的人
http://cksource.com/forums/viewtopic.php?f=11&t=15882
你去吧。奇迹般有效。没有验证错误。
答案 1 :(得分:0)
尝试在页面指令中将ValidateRequest设置为false?更好的选择可能是使用Microsoft Anti-Cross Site Scripting Library:
http://msdn.microsoft.com/en-us/library/aa973813.aspx
这里回答了类似的问题:
What's the difference between requestValidationMode 2.0 and 4.0
也可能没有安装ASP.NET 4.0,或者应用程序池未设置为在4.0下运行。
答案 2 :(得分: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