从客户端(&)中检测到有潜在危险的 Request.Path 值解决方案

出这个问题基本上是在转址字符串中有非法字符“<”,'&'之类的。

方案1:

如果仅仅只是转换页面,传参时出现的问题,可对数据加密:

绑定数据传值时加密 <%#Server.UrlEncode(Eval("UserId").ToString())%> 解密:HttpUtility.UrlDecode(request.QueryString["userid"].Tostrin

方案2:

如果是对数据库数据进行操作时出现此问题,第一、可以在存入数据库中之前加入字符过滤功能(具体实现方法百度一下,你就知道)。第二、也可以用JS加判断:

具体代码如下:

if(a.value.indexOf("$")!=-1)
alert("不允许包含字符:$")
}

方案3:

如果不是前两种问题那么最直接简单的方法就是取消微软对其特殊字符的验证了,不过坏处很明显!安全性不高!

只需在Web.Config配置文件中加入<httpRuntime requestPathInvalidCharacters="" />即可!

跟出现从客户端(&)中检测到有潜在危险的 Request.Form问题时在Page节点中加入ValidateRequest="false"的道理一样!取消验证,最懒的方法!注意安全性不高哦。

方案4:

出现这个问题,一般是由于.Net Framework 使用了4.0版本造成的。(从 .Net Framework 4.0 开始,ASP.NET开始强制检测Request参数安全),而我们可以通过修改 Web.config 来恢复 2.0 版本的模式。
方法如下:
修改Web.config,增加requestValidationMode="2.0"属性值

<span style="font-size:18px;">
<httpRuntime maxRequestLength="2097151" executionTimeout="3600" 
<span style="color:#FF0000;">requestValidationMode="2.0" </span>/>
</span>
posted @ 2015-06-09 10:44  dekevin  阅读(10829)  评论(0编辑  收藏  举报