文章分类 | 推荐文章 | 最新文章 | 热点文章 | 最新软件 | 精品软件 | 下载排行 | 推荐下载 | 免费看大片 | WPS | 杀毒软件
清风网络
首 页 软件下载 网络学院 数码学院
QQ 电脑入门 游戏 操作系统 图形处理 办公软件 媒体动画 精文荟萃 工具软件 网络编程 程序开发 网络技术 认证考试 网站建设 文章专栏
当前位置:清风网络学院网络编程Asp.Net在ASP.NET中防止注入攻击[翻译]
精品推荐
特别推荐
·技巧实例:ASP.NET生成静态页面实现方法
·ASP.NET、JSP及PHP之间的抉择
·.net基础知识错误注意二十二点知识
·asp.net2.0学习历程 菜鸟到中级程序员的飞跃
·.NET基础知识-什么是.NET
·初学C#+ASP.NET+Oracle时积累的备忘点滴
·专家详解:复杂表达式的执行步骤
·asp.net中的加密方法
·DataGrid常见关注问题解决方案
·学习笔记 ASP.NET 5种页面转向法
·ASP.NET网络编程中经常会用到的27个函数集
·ASP.NET之上传文件管理策略
·专家:用.NET动态创建类的实例讲解
·ASP.NET WEB服务和Flash打造MP3播放器
·精通ASP.NET中弹出窗口技术
·asp.net常用代码
·asp.net创建文件夹的IO类的问题
·Asp.Net函数集
·Asp.net cache 简述
·如何最大限度提高.NET的性能 (续)
热点TOP10
·AspNetPager分页控件--使用方法
·ASP.NET购物车的实现及结算处理
·ASP.NET结合存储过程写的通用搜索分页程序
·ASP.Net程式中调用FCKeditor接口
·.NET Framework 3.5多国语言包
·自动下载完整的.NET源代码
·ASP.NET2.0的multiview和wizard控件
·asp.net2.0学习历程 菜鸟到中级程序员的飞跃
·在ASP.NET中把图片保存到SQL SERVER数据库(vb.net)
·通过避免下列10个常见ASP.NET缺陷使网站平稳运行
·.NET基础知识-什么是.NET
·在C#中把两个DataTable连接起来
·VS2005+Crystal Report开发Web应用
·asp.net(C#)海量数据表高效率分页算法(不使用存储过程)
·IFontDisp和CFontHolder的使用问题
·获得一个DataTable中的奇数行和偶数行
·调试ASP.NET程序时出现“The Project Is Not Configured to Be Debugged”错误信息
·ADO.NET 2.0 DataSet和DataTable 新功能新特性
·用C#写计算器程序
·VC#中使用Crystal Report

在ASP.NET中防止注入攻击[翻译]

日期:2006年10月9日 作者: 查看:[大字体 中字体 小字体]


出处: MSDN
翻译:云中城 BLOG

应用范围:


ASP.NET vertion 1.1
ASP.NET vertion 2.0
 

概要:

文本主要介绍如何校验用户输入从而防止注入式攻击.校验用户输入是非常必要的,几乎所有程序级的攻击都包含恶意输入的手段.

你应该校验包括字段,查询字串参数,Cookie等一切用户输入项来保护你的程序免受注入攻击.你得假设所有的用户输入都是恶意的,确保在服务器端对所有的用户输入进行校验.使用基于客户端的验证可以减少页面的住返次数,改进性能,改善用户体验,但是不要仅仅依赖于此,因为客户端的验证很容易就可以被黑客骗过去.

为了验证输入内容,你应该为每一个输入字段定义可接受的输入规则.比较好的作法是从输入字段的长度,范围,格式,类型来作约束.使用可接受的字符约束列表而不是非法字符列表来约束输入.使用非法字符列表约束的方式不好,是因为你几乎不可能过滤所有的有害输入.

如果你需要接受HTML字符输入,最好使用HtmlEncode之类的方法将它进行编码确保安全再将它们显示出来.

内容:

目的

总括

分步实施提要

第一步. 使用ASP.NET 请求校验.

第二步. 使用权用约束输入.

第三步. 对不安全的输入进行编码.

第四步. 对Sql语句使用命令参数方式.

第五步. 验证ASP.NET的错误没有被返回客户端.

额外的资源


--------------------------------------------------------------------------------

目的:

 

对输入的字串长度,范围,格式和类型进行约束.
在开发ASP.NET程序时使用请求验证防止注入攻击.
使用ASP.NET验证控件进行输入验证.
对不安全的输出编码.
使用命令参数集模式防止注入攻击.
防止错误的详细信息被返回到客户端.
概述 :

你应该在程序中验证所有的不信任输入.你应该假定所有的用户输入都是非法的.用户可以在应用程序中提供表单字段,查询字串,客户端cookies和浏览器环境值比如用户代理字串和IP地址等.

弱输入校验通常为注入攻击提供了机会.下面是常见的利用弱输入校验或无输入校验进行攻击的手段.

 

SQL 注入(SQL injection). 如果你使用用户的输入值来动态构造SQL语句,那么数据库可能执行攻击性的有害SQL语句.
跨站脚本(Cross-site scripting). 跨站脚本攻击利用网页验证漏洞注入客户端脚本.接下来这些代码被发送到受信任的客户端电脑上并被浏览器解释执行.因为这些代码来自受信任的站点,所以浏览器无法得知这些代码是有害的.
未授权的文件访问(Unauthorized file access).如果你的代码从调用者那里接受输入,恶意用户可以看到你对文件的操作过程从而访问那些受保护的文件或者使用你的代码注入非法数据.
 

注意 : 注入攻击可通过使用HTTP或HTTPS Secure Socket Layer(SSL) 连接. 传输加密技术不能用来防御攻击.

通常的输入验证方法总结如下.你应在所有的需要通过网络输入的地方进行验证,比如文本框和其它表单输入字段, 查询字串参数,cookies,服务器端变量和网络方法参数.注意,过滤策略应该是只允许正确的输入然后拒绝非法输入.这是因为定义正确的输入策略比过滤所有的非法输入要容易,那通常很难包括所有的非法输入.

通入如下几个方面验证输入内容:

 

约束.验证是否输入的是正确的类型,字符长度,格式和范围.可以应用ASP.NET验证控件来约束服务器控件输入.约束其它来源的输入可以使用正则表达式和自定义的验证规则.
拒绝.检测已知的有害数据输入并拒绝.
过滤.有时候你会希望过滤掉用户输入中那些有安全隐患的那些部分.例如,你的程序允许自由格式的输入,比如备注字段,你会允许特定的安全HTML标记象<b>,<i>及其它的HTML标记.
 

步骤提要

通过以下步骤保护你的ASP.NET程序不受注入式攻击危害 :

 

第一步.使用ASP.NET请求验证.
第二步.约束输入.
第三步.对不安全的输出进行编码.
第四步.对SQL查询语句使用命令参数.
第五步.验证ASP.NET的出错信息没有泄漏至客户端.
 

下面的章节将对这些步骤进行详细讨论.

第一步.使用ASP.NET请求验证.

默认地,ASP.NET 1.1和2.0请求验证会对送至服务器的数据检测是否含有HTML标记元素和保留字符.这可以防止用户向程序中输入脚本.请求验证会对照一个有潜在威胁的字符串列表进行匹配,如果发现异常它会抛出一个HttpRequestValidationException类型的异常.

你可以在你的web.config文件中的<pages>元素中加入validateRequest="false" 或在单独的页面的@Pages元素里面设置ValidateRequest = "false"来禁用此项功能.

如果你想禁用请求验证功能,你可以仅在需要的页面禁用它.比如你在程序页面上包含一个可接受HTML格式输入的字段.

确定在Machine.config文件中请求验证功能被打开.

请求验证功能在ASP.NET中被默认启用.你可以在Machine.config.comments文件中看到如下的默认设置.

<pages validateRequest = "true" ... />

确认你没有修改你的服务器的Machine.config和应用程序的Web.config文件里的默认设置.

测试ASP.NET请求验证

你可以测试请求验证的作用.创建一个ASP.NET页面通过设置ValidateRequest = "fasle"禁用请求验证,代码如下 :

 

<%@ Language="C#" ValidateRequest="false" %>

[1] [2] [3] [4] [5] [6] [7] [8] 下一页 




上一篇:ASP.NET性能最佳实践

下一篇:调用存储过程并且使用返回值的基本方法

在ASP.NET中防止注入攻击[翻译] 相关文章:
·深入剖析恶意攻击性网页-注册表全攻略
·在线翻译谁更厉害——四大流行系统对比
·防止数码照片模糊的三种方法
·中老年人的性事特点和如何防止性早衰
·免费英语在线翻译
·黑客发布针对微软软件漏洞的攻击新代码
·黑客的社会工程攻击新技术:机遇型攻击
·网络安全专家支招防范黑客攻击九大方法
·Windows Live Translator在线翻译服务上线
·一网打尽网页在线即时翻译
在ASP.NET中防止注入攻击[翻译] 相关软件:
·朗道(电脑词典,翻译系统) V5.0
·手机炸弹-短信息攻击懒人版
·2006年考研英语强化班·翻译 唐静 07
·历年考研英语真题阅读理解部分中文翻译(1992—2003年word版)
·同声传译实用中日口译即席翻译2
·大众翻译软件(时代翻译通)V7.0
·重返狼穴3:悍马攻击(Humvee Assault)
·绝地攻击机(Desperate Space)
·空袭Ⅱ:空中攻击机二代 (Airstrike II: Gulf Thunder) V2.58
·超级足球攻击者(Grand Striker)

特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
[打印本页] [关闭窗口] 转载请注明来源:http://www.viphot.com
| 帮助(?) | 版权声明 | 友情连接 | 关于我们 | 信息发布
Copyright 2007 www.viphot.com All Rights Reserved. 鄂ICP备05000083号Powered by:viphot