ASP.NET中的请求验证

这两天做项目的时候偶然发现项目中的保存功能的时候出现这样的异常:异常详细信息: 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>这个配置下),用于禁用请求验证,这样异常得以解决,但是这样会方法会很不安全,如果对用户输入的信息安全性没有要求的话可以采用。

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

 

转载于:https://www.cnblogs.com/mingqi-420/p/11044039.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值