System.Web.HttpRequestValidationException——从客户端检测到危险的Request值

这是比较常见的问题了,如果Web表单中有输入类似于Html标签之类的文本,在通过Request.QueryString或者Request.Form传递这些值的时候,就会触发这样的异常,出于脚本注入等安全性考虑,这也是合情合理的。

一般情况下,程序应尽量过滤掉,或者禁止表单上类似的输入,如果业务上非得有这样的要求,需要输入标签性的文本,可以考虑在数据向服务器端传递前,将一些敏感字符按照约定规则替换掉,向客户端输出时,再还原出原始文本。

         以上是个人认为比较正确的做法,当然就解决眼前问题而言,我看到的都是偷懒的、不计后果的做法,我得承认自己是个只要有偷懒的可能就绝不肯多费功夫的家伙,那就来吧,如果是Asp.Net WebForm应用程序,我记得以前好像在哪里写过,就是在aspx文件的page指令上添加ValidateRequest=false 属性值,这是对单一表单的做法,要想作用于更广泛的Web表单,自然是在webconfig文件中做相同的设置。另外,如果是Asp.Net MVC应用程序,则需要在webconfig<system.web>配置节中加上<httpRuntimerequestValidationMode="2.0"></httpRuntime>配置,之后,再在Controller或者Action头上添加[ValidateInput(false)]的标识,区别大家知道的,作用域不同而已,这里说的Asp.Net MVC是基于Framework4.0的环境的,Framework3.5下没试过,想来差不多。

posted @ 2014-12-29 15:42  左正  阅读(969)  评论(0编辑  收藏  举报