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

时间:2010-08-16 09:49:38

标签: asp.net xml http-post

我正在使用php脚本将某些xml文件发布到.net网址。

当我提交时,我得到回复:

  

潜在危险的Request.Form   从客户端检测到的值   (<?xml version =“... UTF-8”?><!DOCTYPE   cXML SYSTE ...“)。描述:请求   验证已检测到潜在的   危险的客户输入值,和   已经处理了请求   中止。该值可能表示a   试图破坏安全   您的应用程序,例如跨站点   脚本攻击。你可以禁用   通过设置请求验证   页面中的validateRequest = false   指令或在配置中   部分。然而,它是强烈的   建议你的申请   明确检查此中的所有输入   情况下。

由于我没有使用.NET,因此我无法在web.config中设置ValidateRequest =“false”。

在提交之前,我是否需要清理我的xml?我怎么能这样做?

5 个答案:

答案 0 :(得分:3)

有趣的是,可以查看完整错误,但无法访问ASP.NET代码。通常,在调试模式下只能看到完整错误,因为在生产中,错误设置是(应该)RemoteOnlyOff。这似乎是一个配置错误,并且在ASP.NET站点方面存在潜在风险。

你说“对http发布一些xml文件”。如果您确实发布了文件,则不会收到此回复。也许您可以联系该网站的所有者,并要求他更改表单以允许文件输入。

您可以更改输入,使其看起来不再像XML,但它也不再是XML。即,更改<中的所有&lt;,您将能够获取数据,但在处理时必须取消转义。

如果该站点应该接受XML,则必须将其更改为接受XML。它应该接受文件,或者它应该通过将ValidateRequest关闭来接受HTML / XML输入。如果它不应该接收XML,那么你几乎无能为力。这就像填写银行的付款表格一样,在金额字段中加上字母:它只是不起作用(除非它的设计是以这种方式工作)。

答案 1 :(得分:3)

在MVC上,将以下内容放在帖子上

[HttpPost, ValidateInput(false)]
public ActionResult PostMethod(Model viewModel)

答案 2 :(得分:2)

您需要在接收XML的页面中设置ValidateRequest="false",而不是在发送的页面中设置{{1}}。如果您没有对要传递XML的页面的任何访问权限,那么您需要找到另一种传递数据的方法,或者首先将其转换为另一种格式,因为几乎所有看起来都是如此就像HTML一样会导致asp.net页面触发此警告。

答案 3 :(得分:1)

XML或任何“看起来像”它的东西,默认情况下被认为是危险的,是阻止XSS攻击期望明文内容的合理方法。

问题在于您提交的资源,而不是您的代码,向他们提交错误或技术支持请求。

答案 4 :(得分:1)

如果使用ASP.NET 4.0,则在页面

中进行设置除外
<%@ Page ValidateRequest="false" />

添加web.config

<httpRuntime requestValidationMode="2.0" />

这应该有帮助