正在加载中...

关闭
请选择需要拨打的号码
关闭
请根据问题类型选择QQ咨询

已解决:从客户端中检测到有潜在危险的 Request.Form/path值怎么解决?

已解决:从客户端中检测到有潜在危险的 Request.Form/path值怎么解决?

从客户端("*<p>&?")中检测到有潜在危险的 Request.Form值怎么解决?你在windows服务器asp.net运行环境中跑网站,可能会遇到从客户端(?)中检测到有潜在危险的 Request.Form值,从客户端(?)中检测到有潜在危险的 Request.Path 值等问题,那么有以下三种解决方法。

问题再现:

说明: 执行当前 Web 请求期间,出现未经处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 
异常详细信息: System.Web.HttpException: 从客户端(?)中检测到有潜在危险的 Request.Path 值。
源错误: 

执行当前 Web 请求期间生成了未经处理的异常。可以使用下面的异常堆栈跟踪信息确定有关异常原因和发生位置的信息。


A potentially dangerous Request.Path value was detected from the client

堆栈跟踪: 

[HttpException (0x80004005): 从客户端(?)中检测到有潜在危险的 Request.Path 值。]
   System.Web.HttpRequest.ValidateInputIfRequiredByConfig() +9673044
   System.Web.PipelineStepManager.ValidateHelper(HttpContext context) +53


原因分析:

这是因为上述地址中有*或者尖括号<>及&连接符等特殊字符存在。如果你想不让ASP.net 替你拦截这些特殊字符,你需要设置如下Web.config的节:

注意其中的requestPathInvalidCharacters 它是一个以逗号分隔的无效字符列表。不设置它时,它默认的无效字符集(以,分割)是后面7个:<,>,*,%,&,:,\


即,不设置这个属性,默认就是如下设置:

<?xml version="1.0"?>
<configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0">
<system.web>
<httpRuntime requestPathInvalidCharacters="&lt;,&gt;,*,%,:,&amp;,\" />
</system.web>
</configuration>

如果你想这些字符全部不受限制,就应该设置 requestPathInvalidCharacters="" , 如果是部分字符受限制,部分字符不受限制,就需要在 requestPathInvalidCharacters 中设置需要受限制的字符,不受限制的不用设置。


其他解决方案

解决方案1:

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

加密方法:

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

解决方案2:

如果开发者要对数据库数据进行操作时出现此问题,第一、可以在存入数据库中之前加入字符过滤功能。第二、也可以用javascript进行过滤判断:

具体代码如下:

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


 解决方案3:

如果不是前两种问题那么最直接简单的方法就是取消微软对其特殊字符的验证了,这样做的结果就是安全性不高!只需在Web.Config配置文件中加入<httpRuntime requestPathInvalidCharacters="" />即可!

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

在Web.config中进行如下配置:

<configuration>  <system.web>    <httpRuntime requestPathInvalidCharacters="" />  </system.web></configuration>


解决方案4:

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

方法如下:

修改Web.config,增加requestValidationMode="2.0"属性值

<httpRuntime maxRequestLength="2097151" executionTimeout="3600" requestValidationMode="2.0" />

如果您在采购的阿里云服务器配置方面不擅长,那么可以考虑通过阿里云北京分销商北京万维网采购阿里云服务器,可以免费使用专业工程师打造的asp.net运行环境和面板,使用起来非常方便,同时北京万维网还为您提供优惠的采购价格哦!24小时热线电话:18610695105 QQ 442956988 

微信:

万维景盛微信公众号


返回上一页