通行证: 用户 密码 域名空间  下载中心 社区论坛 信息公告 MY小屋
联系我们
设为首页
加入收藏

 

QQ,ASP,PHP,JSP,XML,SQL,.Net,编程 程序 网页图象 建站经验 私服
首页 | 新闻资讯 | 编程开发 | 网页设计 | 图形图象 | 网络媒体 | 网站模板 | 数 据 库 | 投稿
论坛 | 操作系统 | 系统优化 | 网络安全 | 黑客技术 | 硬件学堂 | 硬件报价 | 服 务 器 | 地图
专题 | 应用软件 | 聊天通讯 | Q Q 专栏 | 建站经验 | 在线工具 | 站长Club | 注 册 表 | 旧版
社会 | 游戏娱乐 | 设计欣赏 | 疑难解答 | 社区论坛 | 韩国素材 | 素材图库 | 广告服务 | 服务
当前位置:首页>>编程开发>>NET专区>>正文 新版上线![旧版]
注:打开慢时请稍等

ASP.NET 如何防范SQL注入式攻击

http://www.iyit.net  日期:2006-10-9 12:04:05  来源:iyit.net录入  点击:
参加讨论】⑴ 某个ASP.NET Web应用有一个登录页面,这个登录页面控制着用户是否有权访问应用,它要求用户输入一个名称和密码。   
⑵ 登录页面中输入的内容将直接用来构造动态的SQL命令,或者直接用作存储过程的参数。下面是ASP.NET应用构造查询的一个例子:   
System.Text.StringBuilder query = new System.Text.StringBuilder(   SELECT * from Users WHERE login = )   .Append(txtLogin.Text).Append( AND password=)   .Append(txtPassword.Text).Append();   
⑶ 攻击者在用户名字和密码输入框中输入或1=1之类的内容。   
⑷ 用户输入的内容提交给服务器之后,服务器运行上面的ASP.NET代码构造出查询用户的SQL命令,但由于攻击者输入的内容非常特殊,所以最后得到的SQL命令变成:SELECT * from Users WHERE login = or 1=1 AND password = or 1=1。   
⑸ 服务器执行查询或存储过程,将用户输入的身份信息和服务器中保存的身份信息进行对比。   
⑹ 由于SQL命令实际上已被注入式攻击修改,已经不能真正验证用户身份,所以系统会错误地授权给攻击者。   
如果攻击者知道应用会将表单中输入的内容直接用于验证身份的查询,他就会尝试输入某些特殊的SQL字符串篡改查询改变其原来的功能,欺骗系统授予访问权限。   
系统环境不同,攻击者可能造成的损害也不同,这主要由应用访问数据库的安全权限决定。如果用户的帐户具有管理员或其他比较高级的权限,攻击者就可能对数据库的表执行各种他想要做的操作,包括添加、删除或更新数据,甚至可能直接删除表。   
如何防范?   
好在要防止ASP.NET应用被SQL注入式攻击闯入并不是一件特别困难的事情,只要在利用表单输入的内容构造SQL命令之前,把所有输入内容过滤一番就可以了。过滤输入内容可以按多种方式进行。
  ⑴ 对于动态构造SQL查询的场合,可以使用下面的技术:   
第一:替换单引号,即把所有单独出现的单引号改成两个单引号,防止攻击者修改SQL命令的含义。再来看前面的例子,“SELECT * from Users WHERE login = or 1=1 AND password = or 1=1”显然会得到与“SELECT * from Users WHERE login = or 1=1 AND password = or 1=1”不同的结果。   
第二:删除用户输入内容中的所有连字符,防止攻击者构造出类如“SELECT * from Users WHERE login = mas -- AND password =”之类的查询,因为这类查询的后半部分已经被注释掉,不再有效,攻击者只要知道一个合法的用户登录名称,根本不需要知道用户的密码就可以顺利获得访问权限。   
第三:对于用来执行查询的数据库帐户,限制其权限。用不同的用户帐户执行查询、插入、更新、删除操作。由于隔离了不同帐户可执行的操作,因而也就防止了原本用于执行SELECT命令的地方却被用于执行INSERT、UPDATE或DELETE命令。   
⑵ 用存储过程来执行所有的查询。SQL参数的传递方式将防止攻击者利用单引号和连字符实施攻击。此外,它还使得数据库权限可以限制到只允许特定的存储过程执行,所有的用户输入必须遵从被调用的存储过程的安全上下文,这样就很难再发生注入式攻击了。   
⑶ 限制表单或查询字符串输入的长度。如果用户的登录名字最多只有10个字符,那么不要认可表单中输入的10个以上的字符,这将大大增加攻击者在SQL命令中插入有害代码的难度。   
⑷ 检查用户输入的合法性,确信输入的内容只包含合法的数据。数据检查应当在客户端和服务器端都执行——之所以要执行服务器端验证,是为了弥补客户端验证机制脆弱的安全性。   在客户端,攻击者完全有可能获得网页的源代码,修改验证合法性的脚本(或者直接删除脚本),然后将非法内容通过修改后的表单提交给服务器。因此,要保证验证操作确实已经执行,唯一的办法就是在服务器端也执行验证。你可以使用许多内建的验证对象,例如RegularExpressionValidator,它们能够自动生成验证用的客户端脚本,当然你也可以插入服务器端的方法调用。如果找不到现成的验证对象,你可以通过CustomValidator自己创建一个。   

本新闻共2页,当前在第1页  1  2  


编辑:iyit.net [发送给好友] [打印本页] [关闭窗口] [返回顶部]
上一篇:ASP 到 ASP.NET 的移植  事务
下一篇:asp.Net程序如何防止被注入(整站通用)
转载请注明来源:www.iyit.net
特别声明: 本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。

 相关文章
PHP和ASP上传漏洞探究 asp.Net程序如何防止被注入(整站通用) 小技巧:让Apache支持ASP.NET
XP下Asp.net访问被拒绝 Java中基于Aspectwerkz的AOP 实现基于Aspectwerkz的AOP开发
在ASP.net中保存/取出图片入/从SQL数据 一个.net 压缩位图至JPEG的代码 ASP.NET2.0数据库入门之常见错误
使用 ASP.NET 加密口令 [ASP.NET] Session 详解 从ASP迁移至ASP+
从ASP迁移至ASP+ ----------进入DataSe 从ASP迁移至ASP+ --将HTML表格转换为AS 从ASP迁移至ASP+ --急不可耐了?转换其
从ASP迁移至ASP+ --处理会话变量(Sess ASP+ 与 Java(一) ASP+ 与 Java(二)
asp+的论坛列表程序---代码部分 asp+的论坛列表程序---页面部分 用c#写的asp+域名查询程序
ASP+联结数据库 asp+文件上传增强实例 从ASP迁移至ASP+ --处理会话变量(Sess
最新更新 热点排行 推荐新闻
C# Builder建一个ASP.NET应用程序
asp.Net程序如何防止被注入(整站通用)
ASP.NET 如何防范SQL注入式攻击
ASP 到 ASP.NET 的移植  事务
ASP 到 ASP.NET 的移植 COM 互操作性
我的QQ被盗走的原因分析
WebQQ好玩不?大鸟带你一起体验
奇奇怪怪的QQ密技十五招
QQ被盗到出售过程详解
微软WinXP SP3再次跳票 推至08年发布
Google苹果合作浏览器 防恶意网站
微软操作系统实现开源?
网管应当如何管理Windows操作系统?
让Windows XP系统锁定期间拒绝关机
WindowsVista中文版11月30日正式发布
ASP.NET 使用资源文件
ASP.NET 授权用户和角色
ASP.NET 应用程序级跟踪记录
ASP.NET 用户帐户模拟
安全性和 WebService
合并VCD片断、快速删除文件夹--DOS命令
DOS教程 DOS命令基础应用
低格、分区、高格的应对--DOS命令应用
破解QQ密码如此简单 
一劳永逸--批处理命令(一)
QQ2006 Beta3隆重发布 实用功能一一奉
美国微软总部相中重庆15岁网络奇才(图
QQ号码激活的常见问题及案例分析 
SQL Server安装文件挂起错误解决办法
三分钟让你的系统变处女:Acronis Tru
C# Builder建一个ASP.NET应用程序
asp.Net程序如何防止被注入(整站通用)
ASP.NET 如何防范SQL注入式攻击
在ASP.net中保存/取出图片入/从SQL数据
一个.net 压缩位图至JPEG的代码
我的QQ被盗走的原因分析
WebQQ好玩不?大鸟带你一起体验
奇奇怪怪的QQ密技十五招
QQ被盗到出售过程详解
Google苹果合作浏览器 防恶意网站
网管应当如何管理Windows操作系统?
让Windows XP系统锁定期间拒绝关机
WindowsVista中文版11月30日正式发布
Google优化网站管理员指导方针
Hilltop算法- 探索Google排名新算法

设置首 页 - 版权声明 - 广告服务 - 关于我们 - 联系我们 - 友情连接
Copyrights © 2004-2006 iYiT.Net All Rights Reserved.
网站合作、广告联系QQ:147007642、466949678
易特网络技术 点击这里给我发消息