预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

基于SQL的Web系统安全防范——SQL注入漏洞攻击研究及防范措施SQL-BasedWebSystemSecurity——StructuredQueryLanguageInjectionLeakAttackStudyAndDefenseMeasure作者:辽宁省经济和信息化委员会姜志坤摘要:在当今的数字世界中人们发现在维持公开的Internet连接的同时保护网络和计算机系统的安全变得越来越困难。病毒、木马、后门、蠕虫等攻击层出不穷虚假网站的钓鱼行为也让警惕性不高的公众深受其害。据有关部门统计2008年一季度我国有15万台主机被植入木马网站篡改数量迅速增加预计已达5835个其中政府网站达484个每月564次的安全事件报告。为了减轻信息泄露及系统攻击带来的风险企业和机构开始对自己的系统进行渗透性测试找出其中存在的漏洞和安全隐患。本文通过对目前最流行的SQL注入漏洞攻击的过程做了逐一的分析并提出了检测方法和防范措施。关键字:SQL注入漏洞攻击脚本攻击SQL注入点检测防范模型有害代码SQL注入(SQLInjection)漏洞攻击是目前网上最流行最热门的黑客脚本攻击方法之一那什么是SQL注入漏洞攻击呢?它是指黑客利用一些Web应用程序(如:网站、论坛、留言本、文章发布系统等)中某些存在不安全代码或SQL语句不缜密的页面精心构造SQL语句把非法的SQL语句指令转译到系统实际SQL语句中并执行它以获取用户名、口令等敏感信息从而达到控制主机服务器的攻击方法。1.SQL注入漏洞攻击原理1.1SQL注入漏洞攻击实现原理SQL(StructuredQueryLanguage)是一种用来和数据库交互的语言文本。SQL注入的攻击原理就是攻击者通过Web应用程序利用SQL语句或字符串将非法的数据插入到服务器端数据库中获取数据库的管理用户权限然后将数据库管理用户权限提升至操作系统管理用户权限控制服务器操作系统获取重要信息及机密文件。SQL注入漏洞攻击主要是通过借助于HDSI、NBSI和Domain等SQL注入漏洞扫描工具扫描出Web页面中存在的SQL注入漏洞从而定位SQL注入点通过执行非法的SQL语句或字符串达到入侵者想要的操作。下面以一段身份验证的.NET代码为例说明一下SQL注入攻击的实现方法。SqlConnectionnwConn=newSqlConnection((string)ConfigurationSettings.AppSettings["DBconnStrings"]);stringqueryStr="SELECTuseriduserpwdusernametypeFROMuserswhereuserid='"+Txtusername.Text+"'";DataSetuserSet=newDataSet();SqlDataAdapteruserAdapter=newSqlDataAdapter(queryStrnwConn);userAdapter.Fill(userSet"Users");Session["UserID"]=Txtusername.Text.ToString();Session["type"]=type.Text.ToString();Response.Redirect("/Myweb/admin/login.aspx");从上面的代码中可以看出程序在与数据库建立连接得到用户数据之后直接将username的值通过session传给login.aspx没有进行任何的过滤和处理措施直接用来构造SQL语句其危险系数是非常高的攻击者只要根据SQL语句的编写规则就可以绕过身份验证从而达到入侵的目的。1.2SQL注入漏洞攻击分析SQL注入可以说是一种漏洞也可以说是一种攻击。当程序中的变量处理不当没有对用户提交的数据类型进行校验编写不安全的代码构造非法的SQL语句或字符串都可能产生这个漏洞。例如Web系统有一个login页面这个login页面控制着用户是否有权访问要求用户输入一个用户名和口令连接数据库的语句为:“select*fromuserswhereusername='username'andpassword='password'”攻击者输入用户名为aaor1=1口令为1234or1=1之类的内容。我们可以看出实际上攻击者并不知道真正的用户名、口令该内容提交给服务器之后服务器执行攻击者构造出的SQL命令但由于攻击者输入的内容非常特殊所以最后得到的SQL命令变成:“select*fromuserswhereusername='aa'or1=1a