• 网络学院
  • IT资讯
  • 操作系统
  • 网络技术
  • 软件应用
  • 办公软件
  • 编程技术
  • 网站架设
  • 数据库类
  • 平面设计
  • 多媒体类
  • 游戏资讯
  • 教学论文
  • 认证考试
运用LINQ轻松清除SQL注入式攻击
  站点:
  • 首 页
  • 最新软件
  • 文章教程
  • 国内软件
  • 国外软件
  • 绿色软件
  • 源码下载
  • 字体下载
运用LINQ轻松清除SQL注入式攻击
软件发布 运用LINQ轻松清除SQL注入式攻击
网络软件 系统工具 应用软件 联络聊天 图形图像 多媒体类 行业软件 游戏娱乐 编程开发 安全相关 教育教学 数码软件 绿软下载
热门软件: QQ 瑞星 pplive e话通 木马克星 千千静听 office2000 五笔字根 Photoshop 视频分割
返回文章教程首页 >> 文章首页 >> 网络技术 >> 网络安全 >> 运用LINQ轻松清除SQL注入式攻击

运用LINQ轻松清除SQL注入式攻击

添加时间: 2008-3-5 15:56:23  作者: 网络安全  阅读次数:27   来源: http://www.d9soft.com

       

微软的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;    }

在这种情况下,如果一个用户输入“Ernst Handel”作为公司名,并单击“搜索”按钮,作为响应屏幕会向用户显示那个公司的记录,这正是我们所期望的理想情况。不过一个攻击者可以轻易地操纵这个动态查询。例如,攻击者通过插入一个UNION子句,并用一个注释符号终止这个语句的剩余部分。换句话说,攻击者不是输入“Ernst Handel”,而是输入如下的内容:

Ernst Handel' UNION SELECT CustomerID, ShipName, ShipAddress     FROM ORDERS--

其结果是这个SQL语句在服务器端执行,由于添加了这个恶意的请求。它会将这个动态的SQL查询转换为下面的样子:

SELECT [CustomerID], [CompanyName],      [ContactName]    FROM [Customers]     WHERE CompanyName ='Ernst Handel'     UNION SELECT CustomerID, ShipName,     ShipAddress     FROM ORDERS--'

这是一个相当合法的SQL语句,它可以在应用程序数据库上执行,返回order表中所有的客户,这些客户通过应用程序已经处理了定单。

微软的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;    }

在这种情况下,如果一个用户输入“Ernst Handel”作为公司名,并单击“搜索”按钮,作为响应屏幕会向用户显示那个公司的记录,这正是我们所期望的理想情况。不过一个攻击者可以轻易地操纵这个动态查询。例如,攻击者通过插入一个UNION子句,并用一个注释符号终止这个语句的剩余部分。换句话说,攻击者不是输入“Ernst Handel”,而是输入如下的内容:

Ernst Handel' UNION SELECT CustomerID, ShipName, ShipAddress     FROM ORDERS--

其结果是这个SQL语句在服务器端执行,由于添加了这个恶意的请求。它会将这个动态的SQL查询转换为下面的样子:

SELECT [CustomerID], [CompanyName],      [ContactName]    FROM [Customers]     WHERE CompanyName ='Ernst Handel'     UNION SELECT CustomerID, ShipName,     ShipAddress     FROM ORDERS--'

这是一个相当合法的SQL语句,它可以在应用程序数据库上执行,返回order表中所有的客户,这些客户通过应用程序已经处理了定单。

 

上下文章:

 

上一篇文章: SecPath防火墙进行软件升级的方法 下一篇文章: 用路由器来减轻DDOS攻击危害

相关文章:

  • 你的email服务器准备好应对账号搜集攻击了吗
  • OCPDBA考证轻松过关详解(1)
  • 数据库下载漏洞攻击技术
  • Oracle 9i轻松取得建表和索引的DDL语句
  • 无线网络攻击工具进攻及防范技巧

相关软件:

  • 轻松网页特效 V1.3
  • 恶意网站清除器(Iescan) V7.5 绿色版 (一律通杀恶意插件恶意代码)
  • 轻轻松松练五笔 V4.00
  • 轻轻松松学英语 2004 Build 0401
  • 轻轻松松管外汇 V3.3 全功能无限时版
  • 轻轻松松备份 V1.0.6.2

 

快速导航

  • 网络学院
  • 精品汇聚
  • 字体下载
  • 教程下载
  • ASP源码
  • PHP源码
  • Net源码
  • JSP 源码

网络技术分类导航

  • 局域网专栏
  • 病毒快报
  • 网络安全
  • 组网教程
  • WEB服务器架设与维护
  • FTP服务器架设与维护
  • DNS服务器架设与维护
  • 邮件服务器架设与维护

本类经典文章推荐

  • Ghost有漏洞 镜像恢复需小心陷阱
  • 微软危急补丁涉及所有版本Windows
  • 完美解决双击无法打开C、D、E、F盘...
  • 技巧:交换机安全设置六大原则
  • 后门的分类及各种入侵办法说明
  • 针对Linux网络服务器的渗透测试
  • 路由器的故障分析及排除技巧
  • Linux下的用户口令及其安全性
  • 视频文件夹带木马的常见应对策略
  • 禁止让瑞星2008随机启动的绝招

网络安全阅读排行

  • 网络解惑:找回消失的本地连接
  • 南阳信息港被黑案告破!
  • SXS.EXE木马病毒的清除方法
  • 教你如何手动杀SXS.EXE这种病毒
  • U盘病毒和Autorun.inf文件分析
  • 强人的试用18款杀软手记 !!!看...
  • 网络防火墙技术应用!
  • 远程控制解决问题集合
  • 突破网吧极限及机房管理限制的方法
  • 不用防火墙,让菜鸟远离病毒

网络技术阅读总排行

  • 网络解惑:找回消失的本地连接
  • 教你如何通过路由器来控制上网
  • 网卡故障排除技巧详解
  • FlashFTP教程
  • 网上邻居十大经典应用技巧
  • 如何有效建立Win2000 VPN服务器
  • 经济实惠:组建P2P电影服务器
  • 查找局域网络中的故障技巧
  • 南阳信息港被黑案告破!
  • 小区宽带主要常见故障解决办法

广告位置

字母检索 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 回到顶部

关于我们 | 版权声明 | 免责条款 | 广告联系 | 软件发布 | 下载帮助 | 下载排行 | 网站地图 | 特别鸣谢 | 友情连接

copyright; 2005-2008 D9soft.com 第九软件网 版权所有