Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net &引用;潜在危险的请求。表格“;泛型处理程序中的异常_Asp.net_Validation_Ashx_Generic Handler_Dangerous Request - Fatal编程技术网

Asp.net &引用;潜在危险的请求。表格“;泛型处理程序中的异常

Asp.net &引用;潜在危险的请求。表格“;泛型处理程序中的异常,asp.net,validation,ashx,generic-handler,dangerous-request,Asp.net,Validation,Ashx,Generic Handler,Dangerous Request,我以前见过这个错误,但似乎无法避免。在本例中,我有一个ASHX页面,其中显示了一个简单的HTML表单,其中包含一个文本框,可以将XML发布到其中。当我尝试阅读表单时,我收到“潜在危险的请求。表单值…” 由于它是一个通用处理程序,“ValidateRequest”属性不可用。但是,我已经在web.config中定义了: <location path="xml/MyGenericHandler.ashx"> <system.web> <pages v

我以前见过这个错误,但似乎无法避免。在本例中,我有一个ASHX页面,其中显示了一个简单的HTML表单,其中包含一个文本框,可以将XML发布到其中。当我尝试阅读表单时,我收到“潜在危险的请求。表单值…”

由于它是一个通用处理程序,“ValidateRequest”属性不可用。但是,我已经在web.config中定义了:

<location path="xml/MyGenericHandler.ashx">
    <system.web>
      <pages validateRequest="false" />
    </system.web>
</location>

这段代码早于从.NET3.5到4.0的迁移,所以我猜这就是破坏的起源


你知道如何在ASHX页面上避免这个错误吗?

虽然不是对你问题的直接回答,但我想读一下之前的文章。它确实为您提供了一种确保不会抛出错误的方法。从某种意义上说,这是一种危险的方式,因为这意味着关闭基本保护。然而,答案是合理的,并且它清楚地指出,只有当您绝对确定您正在对所有输出进行编码时,才应该实现它

作为补充说明,我还建议使用而不是内置的Server.HtmlEncode函数


但是,如果您可以修改ashx,一个更简单的解决方案是只修改错误代码,并添加一个“if”语句,以便在错误消息包含要筛选的字符串时不记录错误。

3.5-4.0的更改是ASP.NET 4.0的一些增强的运行时安全功能。快速修复方法是应用以下属性:

<httpRuntime requestValidationMode="2.0" />


不幸的是,这会打开2.0请求验证之前的所有页面,因此我只会在攻击面相对较小的情况下执行此操作。

您最好仅禁用处理程序页面的验证:

  <location path="MyGenericHandler.ashx">
    <system.web>
      <!-- requestValidationMode is to avoid HTML-validation of data posted to the handler -->
      <httpRuntime requestValidationMode="2.0"/>
    </system.web>
  </location>

如何修改处理程序中的代码以绕过对要筛选的字符串的请求验证?
context.Request.Unvalidated.Form