基础小知识

ValidateRequest属性是Page类中比较常用的属性,用来指示是否对输入数据进行潜在危险性检查。在默认情况下为True,就是表示 “是对输入的数据进行潜在危险性检查”,这个属性会对页面提交到服务器的数据进行潜在危险性检查,那么为什么需要进行潜在危险性检查呢?

其实可以把ValidateRequest看作是一种安全机制,它可以防止一些代码对于客户端的不安全侵害,大家都知道服务器连接的不可能只是一台 计算机,只要能访问到它域名的都能进行访问,所以对于服务器的安全性把关是很重要的,所以有个ValidateRequest属性,但是有人问既然这个属 性关系到安全,为什么还要让开发人员自行选择是否进行安全检测?

现在很多项目中都有那种在线编辑器,所见所得能更好的节省时间来编写项目,当需要这样做的时候,页面的ValidtaeRequest属性就必须为Flase,否则提交过去就报安全问题了,更不用说能看到这个代码的效果了。

现在大家估计用的最多的还是VS2005和VS2008,前几天我下载了个VS2010旗舰版试用,VS2008的 一个安装文件大概有4.2G左右,而VS2010旗舰版才2.5G左右,不仅容量缩小了,在一些不安全不稳定的属性上也不在支持,当时我在Page指令中 设定了 ValidateResquest=false,然后Ctrl+F5启动页面,在页面拖过来的TextBox文本框中输入<script>, 然后利用服务器端的Button提交,页面就会报错,如图

 

它说从客户端(TextBox1="<script></script>") 中检测到有 潜在危险的Request.Form值,也就是说表单提交信息中有不安全的信息,眼力好的朋友或许可以看到我已进在Page中添加了 ValidateResquest="false",而且还添加了Debug="true",看下只添加 ValidateResquest="false"的一个报错页面,如图

 

 

以上的图是只添加了ValidateResquest="false"这个属性值之后运行的报错页面,然后页面给出 了2个建议,1 就是在Page中添加Debug="true"这个属性值,那我们跟着它的指示来做,我们在Page中添加了Debug="true"之后在运行还是报 错,如图

 

 

以上的图是添加了Debug="true"属性值之后的报错页面,那 么如何在ValidateResquest="false"和Debug="true"都无用情况下使页面不检测安全信息问题呢?其实大家都知道2010 能打开2008或2005制作的项目,那就是向下兼容,那么我们就利用向下兼容的原则来破解掉使页面不检测安全信息这个问题,ASP.NET允许我们通过 在web.config中配置,使用ASP.NET 2.0的请求验证行为:<httpRuntime requestValidationMode=”2.0″ /> ,这样页面再次提交就不会报错了,如图

 

 VS2005和2008布局几乎一样,但是在VS2010中的布局起了很大的变化,VS2010中的一大亮点就是 加入了MVC2,这个东东还真的很强大,我只能叹息微软的复刻能力太强大了,自从Java推出了MVC以来得到了众多软件开发工程师的追捧,微软自然不甘 落后,也在2010中推出了MVC2,使项目的层次结构更清晰,合作开发起来更出色,VS2010默认是.Net Framework 4,并且兼容之前 的所有版本。

 

 

posted on 2015-03-11 11:15  屠龙尊者  阅读(1108)  评论(2编辑  收藏  举报