SQL注入攻击及其检测防御技术研究.doc
文本预览下载声明
SQL注入攻击及其检测防御技术研究
关键字: SQL注入攻击及其检测防御技术研究
本文为Word文档,感谢你的关注!
摘要:本文对SQL注入攻击的原理和方法进行了介绍,对如何检测和防御SQL注入攻击进行了研究。网络系统安全问题是一个持续性问题,SQL注入攻击作为网络中最为常见的攻击手段。了解并掌握如何有效防御SQL注入攻击对提升Web网络系统的安全性有着重大的现实指导意义。
关键词: Web安全; SQL注入; 漏洞检测; 攻击防御
TP391
文献标志码:A
2095-2163(2016)06-0087-03
0引言
最近十年来,互联网产业和技术发展蓬勃迅速,社会的各个领域都已经与Web应用建立了密切联系。使用互联网已经成为现代生活方式的不二选择。在全世界,大致可知应有数以亿计的网络服务器都在提供互联网服务。但与此同时,这些网络服务器也无时无刻都会遭遇到各类恶意攻击。
数据库是Web应用系统的基础组成部分,存储着大量关键敏感信息,因此,侵入和攻击数据库,窃取数据信息是网络攻击的主要目的和??施手段。根据相关组织调研数据显示,Web应用十大关键风险排名第一位就是注入攻击。在全世界发生的Web服务系统攻击实践中,大约有60%的行为均可标注为SQL注入攻击。因此,研究SQL注入攻击及检测防御技术对有效控制和降低网络攻击事件发生必将具有重大现实意义及作用。
[BT4]1SQL注入攻击研究
[BT5]1.1SQL注入攻击原理
SQL注入攻击(SQL injection)是利用Web 应用程序的设计漏洞来实现Web应用系统、尤其是数据库的入侵,从而最终达到获取或破坏数据的一种非法策略及手段。通过SQL注入可能会导致如下后果:入侵者恶意进占了数据库服务器、获取数据库高级操作权限、窃取数据库中存储的关键数据信息等。
SQL注入攻击的发起者多是利用Web页面中存在的漏洞,有针对性地构造SQL语句,并蓄意引导数据库服务器执行这些SQL语句,通过截取用户名和密码等重要信息,从而全面获取了数据库控制权限。
SQL注入攻击的可选研究方式主要有:
1)使用注释符和恒等式;
2)使用union语句进行联合查询;
3)使用insert或update语句对数据库数据表内数据进行增加或修改;
4)利用一些内置函数辅助进行攻击等。
在此,将结合前2种方法给出实现过程详述与阐析。
1.1.1使用注释符和恒等式
众所周知,如果要查询数据库的user表中所有条目,那么正确的查询语句为:
SELECT * FROM user WHERE username = user AND password = pawd
利用ASP 实现时,需要连接字符串,而后再加上SQL 命令,最后执行查看返回的结果是否为空。那么SQL 语句嵌套在ASP 代码中的表现形式可描述如下:
var sql = SELECT * FROM user WHERE username = +loginname + AND密码 = +loginpwd + ;(loginname字段与loginpwd字段分别存储了用户在网页上所填入的用户名和密码信息。)
但是当用户在Web页面文本框内输入的内容为:loginname=‘ or 1=1 -- ,而loginpwd 的内容任意输入时,此时在ASP 中的查询语句则演变成:
SELECT * FROM user WHERE username=‘’or 1=1 --AND password = pawd
显然,SQL语句中密码验证部分被“- -”注释符当成了注释语句,同时,由于“1=1”恒等式的存在导致用户名验证部分永远为真。用户名验证和密码验证均发生了失效,这样攻击者就可以登录进入Web应用系统了。
1.1.2使用union语句进行联合查询
利用union关键字查询一些数据库用户信息、数据库版本等信息。还可以用union关键字来获取其他信息。通过页面错误信息提示得到当前数据库名称、用户名等关键信息。而且,还可通过多次的报错测试,逐步获得多种关键数据信息,从而掌握数据库内部结构、数据库用户名等信息,为侵入数据提供实现基础。
[BT5]1.2SQL注入攻击流程
SQL注入攻击的基础流程可概述为:首先,检测Web登录页面中是否有SQL注入漏洞,从而构建SQL注入点;其次,利用已经构建的SQL注入点将本该基于页面获取的验证参数通过SQL语句的语法组合传
显示全部