运用LINQ轻松清除SQL注入式攻击
日期:2007年12月26日 作者: 查看:[大字体 中字体 小字体]-
微软的LINQ to SQL技术为.net开发人员提供了一种机会,使其可以清除所开发的Web应用程序中SQL注入式安全漏洞的可能性。
随着对Web安全破坏的与日俱增,开发人员越来越深刻地认识到需要为其开发的应用程序的安全性承担更大的责任,而且应用程序框架的厂商们也将更坚实的安全特性构建到其应用软件中去。许多开发人员已经认识到构建安全应用程序和防止破坏性攻击的最有效的方法就是从一开始就要安全地设计和实施应用程序。不幸的是,开发团队往往缺乏训练和资源来做出关于应用程序安全的科学设计决策。
在开发人员承受越来越多的安全责任之时,许多开发人员了解到的第一个Web应用安全漏洞,是一个被称为“SQL注入”的极危险的命令注入形式。命令注入的原始的形式本是指这样一种漏洞:攻击者通过提供一个正常使用者意料之外的输入,改变你的Web应用程序的运行方式,从而允许攻击者运行服务器上的非授权的命令。无疑,SQL注入式攻击是很常见的、被广泛使用的攻击形式。幸运的是,一旦我们理解了这个问题,就可以很容易地防止SQL注入式攻击。更妙的是,现在微软的数据访问技术向.net开发人员提供了彻底地清除SQL注入漏洞的机会,当然前提是能够正确使用。这种技术称为“语言级集成查询”(Language Integrated Query (LINQ)),并随Visual Studio "Orcas" 和 .NET Framework 3.5一起发布。本文将讨论如何通过LINQ强化Web应用程序的数据访问代码,从而解决通过SQL注入进行攻击的问题。
概述
SQL注入是一种Web应用程序的安全漏洞,通过它攻击者可以将恶意数据提交给应用程序,欺骗应用程序在服务器上执行恶意的SQL命令。理论上讲,这种攻击是容易预防的,不过由于其允许攻击者直接运行针对用户关键数据的数据库命令,从而成为一种常见的、危害性大的攻击形式。在非常极端的情况下,攻击者不但能够自由地控制用户的数据,还可以删除数据表和数据库,甚至控制整个数据库服务器。
如果这种攻击容易预防,那么为什么还如此危险呢?首先,由于众所周知的经济上的原因,你的应用数据库是非常诱人的,可以引起攻击者的极大注意。如果SQL注入漏洞在Web应用程序中可能存在着,那么对于一个攻击者来说是很容易检测到的,然后就可以利用它。很显然,即使SQL注入错误并不是开发人员最经常犯的错误,它们也很容易被发现和利用。
检测SQL注入漏洞的一个简单方法是在一次输入中插入一个元字符(meta-character),一个应用程序会用这个字符生成一个数据库访问语句。例如,在任何包含一个搜索输入栏的Web站点上,一个攻击者可以输入一个数据库元字符,例如一个核对符号(),然后单击“搜索”按钮提交输入。如果应用程序返回一个数据库错误消息,攻击者不但会知道他已经发现了一个应用程序的数据库驱动部分,而且他还能注入更加有意义的命令,让你的服务器执行它们。应用程序安全研究员Michael Sutton近来强调,发现那些易于受到SQL攻击的站点是很容易的。他说,使用Google搜索API这种方法只需几分钟就可以确定大量的潜在的易受攻击的站点。
对SQL注入的剖析
这里我们给出一个SQL注入的例子来说明两个问题,一是SQL注入这种错误是很容易犯的,二是只要进行严格的程序设计,这种错误是很容易预防的。
这个示例用的Web应用程序包含一个名为SQLInjection.aspx简单的客户搜索页面,这个页面易于受到SQL注入攻击。此页面包含一个CompanyName的输入服务器控件,还有一个数据表格控件,用于显示从微软的示例数据库Northwind的搜索结果(这个数据库可从SQL Server 2005中找到)。在搜索期间执行的这个查询包含一个应用程序设计中很普通的错误:它动态地从用户提供的输入中生成查询。这是Web应用程序数据访问中的一个主要的错误,因为这样实际上潜在地相信了用户输入,并直接将其发送给你的服务器。在从“搜索”的单击事件启动时,这个查询看起来是这个样子:
protected void btnSearch_Click(object sender, EventArgs e) { String cmd = "SELECT [CustomerID], [CompanyName], [ContactName] FROM [Customers] WHERE CompanyName ='" + txtCompanyName.Text + "'"; SqlDataSource1.SelectCommand = cmd; GridView1.Visible = true; } - [1] [2] [3] 下一页
-
- 运用LINQ轻松清除SQL注入式攻击 相关文章:
- ·黑客攻击与防守
- ·真三国无双3 修改吕布攻击力 - 真三国无双4攻略秘籍 - 真三国无双4
- ·什么是SQL注入法攻击
- ·sqlexp攻击.怎么防止?
- ·x-scan扫描中---Nessus攻击脚本简介
- ·防御局域网攻击 ZT
- ·IIS攻击与日志
- ·全程攻击无线网络WEP加密(二)
- ·QQ攻击方法
- ·什么是注入式攻击(1)
- 运用LINQ轻松清除SQL注入式攻击 相关软件
- ·《悍马攻击》游戏存档
- ·团队攻击:西线战斗(Squad Assault: West Front) 试玩版
- ·绝地攻击机(Desperate Space)
- ·空袭Ⅱ:空中攻击机二代 (Airstrike II: Gulf Thunder) V2.58
- ·金盾拒绝服务攻击状态监视器
- ·城堡攻击2-快手战略
- ·超级足球攻击者(Grand Striker)
- ·重型攻击
- ·超级攻击性武器
- ·极度攻击
- 特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作
- 者.文章版权归文章原始作者所有.对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转
- 载的文章有版权问题请联系编辑人员,我们尽快予以更正. 转载请注明来源:http://www.hackhome.com
上一篇:真正的海光山色 加拿大风光图片
精品推荐
热点TOP10
- ·精妙SQL语句收集
- ·SQLPLUS命令的使用大全
- ·收集的host文件网站黑名单
- ·数据库连接字符串大全
- ·SQL Server 练习题
- ·SQL中CASE的用法
- ·认识VF--Visual FoxPro 漫谈
- ·什么是SQL注入法攻击
- ·一道褒贬不一的SQL考试题
- ·学习SQL语句之SQL语句大全
- ·SQL Server不存在或访问被拒绝 问题的解决
- ·SQL数据库高级教程:SQL UNION 和 UNION ALL
- ·SQLSERVER中,数据库同步的实现
- ·MS-SQL开发常用汇总和t-sql技巧集锦
- ·MySQL管理工具SQLyog最新6.1下载
- ·“SQL Server不存在或访问被拒绝”问题的解决
- ·学习SQL SERVER的存储过程-之一认识存储过程语法
- ·如何删除数据库中的冗余数据(翻译)
- ·数据库物理设计经验谈
- ·MySQL数据库学习手册之MySQL客户工具和API
特别推荐
- ·什么是SQL注入法攻击
- ·用SQL语句删除重复记录的四种方法
- ·数据库查询优化
- ·MySQL常见错误问答!
- ·MySQL从后门进企业市场
- ·精妙SQL语句收集
- ·如何在WinNT/2K/XP下启动纯DOS
- ·自己动手做一个SQL解释器
- ·SQL SERVER实用技巧
- ·动态创建MSSQL数据库表存储过程
- ·数据库的分页问题
- ·DM分区软件使用详解
- ·对ADSL接入方式铜缆可用线对率分析
- ·收集的host文件网站黑名单
- ·修复SQL Server 2000数据库之实战经验
- ·实用的存储过程之一
- ·IIS5 ISAPI Extension Back Door
- ·MySQL中文参考手册7(MySQL存取权限系统)grant设置密码password
- ·Sql server 如何得到汉字的声母
- ·数据库物理设计经验谈
