一个潜在危险的Request.Form值

时间:2010-02-17 15:30:33

标签: c# asp.net xss

在我的ASP.NET应用程序中,我在POST期间收到以下错误消息,其中包含某些输入:

  

从客户端

检测到潜在危险的Request.Form值

我知道这是因为.NET的一个名为Request Validation的功能正在防止可能在XSS攻击中使用的潜在危险字符被提交。 但是,我使用HTML编辑器并且需要能够为该编辑器关闭此功能。

我可以在我的web.config文件中执行此操作,但它是全局性的 - 我不满意,因为它会在我的应用程序的所有字段中禁用此安全功能,而不仅仅是HTML编辑器。

我尝试在我想要关闭的特定页面中设置Page指令的ValidateRequest属性,但不幸的是它没有用。

任何人都可以想到为什么这不起作用?

修改

嗯,我得到了它的工作。感谢你们的帮助,我能够在编辑器中找到一个属性,允许在表单提交之前编码文本区域的内容,所以.net就可以了 - 然后在数据库插入和重新呈现我正在解码的内容之前在宇宙中,内容和所有内容都几乎

既然编辑器本身有效,并且不再抛出此错误......我遇到了另一个问题而且我很困惑为什么这甚至会成为一个问题。我在页面顶部有面包屑,当你点击其中一个面包屑(链接按钮)时,页面炸弹会出现相同的错误(“一个有潜在危险的Request.Form值......”)。我很困惑为什么会这样。链接按钮只需提交表单并将页面重新发布回自身 - 提交按钮执行相同的操作。那么为什么提交按钮功能正常而不是面包屑的链接按钮呢?

我应该提到面包屑是在用户控件中 - 虽然我不认为这应该有所作为。

思想?

3 个答案:

答案 0 :(得分:2)

我将ValidateRequest设置为false,它对我有用......这就是微软推荐的:http://www.asp.net/learn/whitepapers/request-validation/。如果你正在使用VS,也许可以尝试清理和重建?

我倾向于在@Page指令中执行它而不是配置文件,但是你是第一个听说它无效的人...

答案 1 :(得分:0)

如果你可以避免它,你真的不想关闭它,因为它确实有助于防止XSS攻击。找到问题的实际原因要好得多。通常,如果页面中的视图状态与后面的代码中的控件集不匹配,则会引发此错误。主要原因可能是:

  1. 应用程序池在内存中有.dll的副本,与页面的html部分不匹配。
  2. 如果您正在运行cassini,请停止调试,停止cassini服务器进程,清理解决方案并重建。
  3. 如果您在远程服务器上遇到此问题,请回收应用程序池,清除页面缓存,然后重试。
  4. 在回收或重建后,可能无法重写临时asp.net文件。
  5. 如果您在远程服务器上,请停止该网站,停止该应用程序池。转到相应的临时ASP.Net文件目录并删除应用程序的文件夹。
  6. 如果您在cassini服务器中,请停止调试,停止cassini服务器进程,然后关闭VS.然后转到临时ASP.Net文件并将其全部删除。重新加载VS,清理/构建。再试一次。

答案 2 :(得分:0)

这是一个用于编码字段值的jQuery技巧,在本例中为“textarea”

            $("textarea").each(function(i) {
                var $textbox = $(this);
                $textbox.val($('<div/>').text($textbox.val()).html());
            });