请慎用ASP.Net的validateRequest=false属性
阅读全文下载代码:http://www.cckan.net/forum.php?mod=viewthread&tid=74
在客户端的文体框里输入“<任何字符>例如<user>”等字符的时候为出现这样的错误
序安全的尝试,如跨站点的脚本攻击。通过在 Page 指令或 配置节中设置 validateRequest=false 可以禁用请求验证。但是,在这种情况下,强烈建议应用程序显式检查所有输入。
异常详细信息: System.Web.HttpRequestValidationException: 从客户端(txtName="<fd>")中检测到有潜在危险的 Request.Form 值。
这是没有设置<pages validateRequest ="true">这个属性这是默认的,当我们改为false的时候这样的错误就不会出现了,但是我们不能只是这样改,这样虽说是没有错了, 但是你有没有想过程序也就不安全了啊,
正确的做法是在你当前页面添加Page_Error()函数,来捕获所有页面处理过程中发生的而没有处理的异常。然后给用户一个合法的报错信息。如果当前页面没有Page_Error(),这个异常将会送到Global.asax的Application_Error()来处理,你也可以在那里写通用的异常报错处理函数。如果两个地方都没有写异常处理函数,才会显示这个默认的报错页面呢。
protected void Page_Error(object sender, EventArgs e)
{
Exception ex = Server.GetLastError();
if (ex is HttpRequestValidationException)
{
Response.Write("请不要输入这样的字符,呵呵");
Server.ClearError(); // 如果不ClearError()这个异常会继续传到Application_Error()。
}
}
这是ASP.Net提供的一个很重要的安全特性。因为很多程序员对安全没有概念,甚至都不知道XSS这种攻击的存在,知道主动去防护的就更少了。ASP.Net在这一点上做到默认安全。这样让对安全不是很了解的程序员依旧可以写出有一定安全防护能力的网站。
但是,当我Google搜索 HttpRequestValidationException 或者 "A potentially dangerous Request.Form value was detected from the client"的时候,惊奇的发现大部分人给出的解决方案竟然是在ASP.Net页面描述中通过设置 validateRequest=false 来禁用这个特性,而不去关心那个程序员的网站是否真的不需要这个特性。看得我这叫一个胆战心惊。安全意识应该时时刻刻在每一个程序员的心里,不管你对安全的概念了解多少,一个主动的意识在脑子里,你的站点就会安全很多。
为什么很多程序员想要禁止 validateRequest 呢?有一部分是真的需要用户输入"<>"之类的字符。这就不必说了。还有一部分其实并不是用户允许输入那些容易引起XSS的字符,而是讨厌这种报错的形式,毕竟一大段英文加上一个ASP.Net典型异常错误信息,显得这个站点出错了,而不是用户输入了非法的字符,可是自己又不知道怎么不让它报错,自己来处理报错。
对于希望很好的处理这个错误信息,而不使用默认ASP.Net异常报错信息的程序员们,你们不要禁用validateRequest=false。
例子 http://www.cckan.net/forum.php?mod=viewthread&tid=73
转载于:https://www.cnblogs.com/sufei/archive/2009/05/16/1485980.html
请慎用ASP.Net的validateRequest=false属性相关推荐
- 关于ASP.Net的validateRequest=false(验证请求)
ASP.Net的validateRequest=false validateRequest="false" 指是否要IIS验证页面提交的非法字符,比如:>,<号等, ...
- asp.net学习笔记异常处理001---.framework4.0中asp.net页面ValidateRequest=false 无效的问题
在做牛腩新闻发布系统的时候,部分同学可能会遇到这样的情况: 从客户端(ContentPlaceHolder1_m_ContentPlaceHolder_ftbContent="<P&g ...
- ASP.NET 4.0 页面 ValidateRequest=false 失效不起作用
当ASP.NET 2.0升级到 ASP.NET 4.0后,页面的 ValidateRequest="false" 不起作用. 因为 ASP.NET 4.0 请求验证被提前到IHtt ...
- ASP.NET 4.0: 请求验证模式变化导致ValidateRequest=false失效
ASP.NET请求验证功能可以给我提供应用程序的安全保证,避免站点受到XSS的攻击.但是在一些情况下,我们需要禁用这个功能,比如我们需要使用HtmlEditor来让用户输入一些HTML文本,这时候AS ...
- ASP.NET4.0中 ValidateRequest=false失效
ASP.NET请求验证功能可以给我提供应用程序的保存,避免站点受到XSS的攻击. 但是在一些情况下,我们需要禁用这个功能,比如我们需要使用HtmlEditor来让用户输入一些HTML文本,这时候ASP ...
- ValidateRequest=false 无效
在做牛腩新闻发布系统的时候,部分同学可能会遇到这样的情况: 从客户端(ContentPlaceHolder1_m_ContentPlaceHolder_ftbContent="<P&g ...
- 非禁用validateRequest=false使用Page_Error()错误处理
ASP.Net 1.1后引入了对提交表单自动检查是否存在XSS(跨站脚本攻击)的能力.当用户试图用之类的输入影响页面返回结果的时候,ASP.Net的引擎会引发一 个 HttpRequestValida ...
- 浅析ASP.NET的Page.IsPostBack 属性
浅析ASP.NET的Page.IsPostBack 属性 http://www.sina.com.cn 2008年05月06日 11:33 IT168.com [IT168技术文档] 现在从对ASP ...
- 浅析ASP.NET的Page.IsPostBack 属性http://www.sina.com.cn 2008年05月06日 11:33 IT168.com
浅析ASP.NET的Page.IsPostBack 属性 http://www.sina.com.cn 2008年05月06日 11:33 IT168.com [IT168技术文档] 现在从对ASP ...
- MVC中validateRequest=false不起作用
MVC Request.QueryString 客户端 潜在危险 在MVC中如果传递xml等参数时,会报"从客户端中检测到有潜在危险的Request.QueryString值"的错 ...
最新文章
- Ubuntu中Atom安装与使用
- python open方法下file模块_python-linecache模块读取文件用法
- python计算每月工资-python税后工资计算器
- android之Itent.ACTION_PICK Intent.ACTION_GET_CONTENT妙用
- prod和probor在matlab,基本FIS编辑器(MATLAB模糊逻辑工具箱函数)
- linkedHashMap源码解析(JDK1.8)
- 批量读入一个文件夹中文件的数据操作实例
- Django create_user with is_active=False
- android 上下滑动重影
- C语言标准库 <float.h>
- linux clock命令,Centos Linux下使用date/clock/hwclock命令设置系统和硬件时间
- 【MySQL】java应用开发与实践读书笔记
- msi b460m pro wifi黑苹果 efi
- Minidump方式保留程序崩溃现场
- linux将pdf转为png,将多页PDF转换为PNG并返回(Linux)
- 名词用作动词举例_动词+名词-动词加名词-名词作动词
- 最大公约数是啥意思_什么是最大公约数
- 51单片机用蜂鸣器来输出音乐《两只老虎》
- 手机实名检测 API数据接口
- 黑客与技术提示:电脑出现文中现象说明你已经被黑客入侵
热门文章
- 21届校招应届生Offer薪资曝光:年薪35万+,倒挂老员工:我还没有应届生重要
- Linux服务器的那些性能参数指标
- 你是如何抵制百度系列产品的?
- 计算机网络负载均衡图片,负载均衡计算机网络课程网.ppt
- c语言检测数独是否正确,会数独的大佬请进。这是个判断九宫格数独是否正确的程序。...
- mysql update 几万 非常慢_MySQL慢日志这样分析才够味
- python爬取教务系统_python 爬取 强智科技教务系统(湖南)
- 部署Hadoop集群
- python基础之列表、元组
- 文件写入一行 、读取一行的工具类案例