ADOU-V

导航

从客户端中检测到有潜在危险的 Request.Form 值

aspx页面设置:

当asp.net提交<>这些字符到aspx页面时,如果未设置validaterequest="false",就会出现错误:从客户端(<?xml version="...='UTF-8'?><SOAP-ENV:Envelope S...")中检测到有潜在危险的Request.Form 值。
1.在.aspx文件头中加入这句:

 1 <%@ Page validateRequest="false" %> 

2.修改web.config文件:

 1 <configuration> <system.web> <pages validateRequest="false" /> </system.web> </configuration> 

3.要设置web.config中httpRuntime 配置节中的 requestValidationMode 特性设置为 requestValidationMode="2.0",要不设置了validaterequest="false"也会提示检测到有潜在危险的Request.Form 值的错误。

说明: 请求验证过程检测到有潜在危险的客户端输入值,对请求的处理已经中止。该值可能指示存在危及应用程序安全的尝试,如跨站点脚本攻击。若要允许页面重写应用程序请求验证设置,请将 httpRuntime 配置节中的 requestValidationMode 特性设置为 requestValidationMode="2.0"。示例: <httpRuntime requestValidationMode="2.0" />。设置此值后,可通过在 Page 指令或 <pages> 配置节中设置 validateRequest="false" 禁用请求验证。但是,在这种情况下,强烈建议应用程序显式检查所有输入。

 

ashx页面设置:

web开发中难免要多到ajax技术.

asp.net中我们处理ajax后台页面有人喜欢用aspx页面,也有人喜欢用ashx页面,相比后者处理速度更快.

但是当你的环境是 .NET 4.0,而 ajax 中提交的参数正好有特殊字符时,比如 name=<head>

这时就会报错:检测到有潜在危险的 Request.Form 值

这时我们需要修改web.config文件,如下:

<httpRuntime  requestValidationMode="2.0"/>

让它的验证模式为.NET 2.0模式,这时ashx就不会报错.

因为4.0的验证在HTTP的BeginRequest前启用,因此,请求的验证适用于所有ASP.NET资源,aspx页面,ashx页面,Web服务和一些HTTP处理程序等.

当然如果是在aspx页面报这个错误就是在页头加验证属性,非常简单,google查询一下即可.

如果有人问 一些特殊字符在ajax怎么传到后台ashx页面呢.比如 abc.aspx?name=as&cd  这里的name值是as&cd 而不是as 这个问题!如下所示:

JQuery AJAX中遇到这样一个问题,参数中包含特殊字符,比如&'#@等
这是执行AJAX的时候就会出问题,因为所传的参数变了.
看个示例就明白:

 1               $.ajax({
 2                     url: '/ashx/ajax.ashx',
 3                     type: 'post',
 4                     data: 'option=delete&name=11&adb,
 5                     success: function (data) {
 6                         if (data != 'error') {
 7                           
 8                             }
 9                         }
10                });


上面执行的ajax就是异步删除一个name为 11&abd 的数据
当请求到ajax.ashx页面时,我们获取到的name参数为11
执行操作后会发现其实删除了 name 为 11的数据,而没有删除 name 为 11&abc 的数据
这是由于有&特殊字符,把以前的俩个参数变成了三个参数 option,name,abc
这时就需要用另外一种方法传递参数:

 1               $.ajax({
 2                     url: '/ashx/ajax.ashx',
 3                     type: 'post',
 4                     data:{ 'option':'delete','name':'11&adb'},
 5                     success: function (data) {
 6                         if (data != 'error') {
 7                           
 8                             }
 9                         }
10                });

采用上面的json格式传递参数就可以避免特殊字符引起的参数错误问题.

posted on 2016-02-21 02:52  a-dou  阅读(889)  评论(0)    收藏  举报