当前位置: 移动技术网 > IT编程>开发语言>.net > ASP.NET中的请求验证

ASP.NET中的请求验证

2019年06月19日  | 移动技术网IT编程  | 我要评论

2013刘谦春晚魔术,没有钱打一字,抽烟的兔子

这两天做项目的时候偶然发现项目中的保存功能的时候出现这样的异常:异常详细信息: system.web.httprequestvalidationexception: 从客户端(xxxx)中检测到有潜在危险的 request.form 值。经过查询调试发现,保存的文本中存在回车符,<br/>标签作为参数的值的一部分传到后台了,被后台检测出有潜在的风险。

        首先的想法就是在请求后台之前把参数处理成不含<br/>标签的形式,前台保存取值的时候用的是prototype中的form.serialize()的方法,传的时候时已经编码过的值,但是不知道为什么用new ajax.request请求后台是时候,还是包含<br/>的标签,从而导致了该异常的出现,改成jquery的form.serialize()的方法取得值和prototype取得值是一致的,用jquery.ajax请求的时候就没有这个问题,这样把prototype有关的代码都改成jquery问题得以解决,但是目前的这个项目大部分都是用prototype做的,换起来比较麻烦,所以必须寻找一个其他的方法来处理这个问题。(以后有时间会查一下prototype为什么会出现这样的问题,大家有知道的欢迎交流学习)

      asp.net可以禁用这些风险的验证 具体的做法是:在配置文件webconfig中增加 <httpruntime requestvalidationmode="2.0" />和 <pages validaterequest="false" />两个配置(<system.web>这个配置下),用于禁用请求验证,这样异常得以解决,但是这样会方法会很不安全,如果对用户输入的信息安全性没有要求的话可以采用。

    目前还有没有找到更好的方法来解决这个问题,暂时使用的是第二个方法,大家有什么好的方法欢迎来和我交流。

 

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网