基于SQL注入Web应用程序安全性探究.docVIP

  • 1
  • 0
  • 约3.83千字
  • 约 7页
  • 2017-11-27 发布于福建
  • 举报
基于SQL注入Web应用程序安全性探究

基于SQL注入Web应用程序安全性探究   【 摘 要 】 SQL注入是对Web应用程序造成威胁非常流行的一种攻击方法,本文从SQL注入的原理技术进行分析,介绍如何从多个角度防止SQL注入,更好的维护Web应用程序的安全。 【 关键词 】 SQL注入;安全;研究 On the Security of Web Applications Based on SQL Injection Lei Yan-rui (Hainan College of Software Technology HainanQionghai 571400) 【 Abstract 】 SQL injection is a common form of attack that poses threats against Web applications. In this paper, we analyze the technical principles of SQL injection, and present several approaches to avoiding the attack and keeping Web applications safe. 【 Keywords 】 sql injection; security; research 1 引言 随着互联网的普及应用,Web应用系统广泛应用到各个领域。但由于Web应用系统的功能丰富、便于传播、通用性强等特点,导致它容易为网络黑客所攻击。1998年第一次有人发现SQL注入,此后研究人员开始注意SQL注入的危险性,而且之后SQL注入进行攻击的事件愈演愈烈。 近几年发生几起SQL注入比较有名的事件,2009年12月,黑客利用SQL注入漏洞攻击RockYou数据库获取用户密码信息;2010年9月,瑞典选民在选举阶段内通过SQL注入攻击选举;2011年,黑客利用SQL注入漏洞从诺基亚网站盗取用户信息;2012年,MMORPG游戏网站被黑客SQL注入攻击。越来越多利用SQL注入攻击非法获取经济利益,任何网站或应用中的一个SQL注入漏洞都很有可能受到黑客的攻击。 2 SQL注入技术分析 SQL是访问数据库服务器的标准语言,几乎所有的Web应用都需要与数据库打交道,势必用到SQL语言。SQL的典型操作“查询”可以获取数据库的“查询结果记录集”,并且SQL语句可以对数据库的结构或数据进行操作和修改,如果攻击者利用SQL语句进入Web应用程序的数据查询,SQL注入攻击就有可能发生。 当Web应用程序的开发人员对cookie或用户输入的参数等数据不进行过滤或验证就直接传递值给SQL查询语句时,SQL注入漏洞就开始存在了。 (1) SQL注入漏洞原因 一条典型的SQL语句: statement := “SELECT* FROM users WHERE name = ‘“ + uName + “‘;” 这段代码的目的是将某个特定用户从用户表中取出,但如果用户名被恶意用户用特定方式伪造,这条语句的执行操作就完全违反了作者的期望。比如,将用户名这个变量(uName)输入为: u’ or ‘a’=‘a’ 这样写的目的是,name=‘uName’的要求 就变成了name=‘u’?or?’a’=‘a’,单引号刚好闭合,此时原始语句变为: SELECT * FROM users WHERE name = ‘u’ or ‘a’=‘a’; 此代码被用于认证过程的话,如上输入能够强迫选择合法的用户名,因为赋值 ‘a’=‘a’永远为真。 如此的SQL注入除了可以获取正确的用户通过外,还可以利用这一点删除表、或者获取表中所有的数据等。 (2)SQL注入的危害 攻击者可以利用SQL注入任意增、删、改或查数据库中的数据,获取数据库中存放的个人密码、消费记录等敏感信息;可以通过这种方法获得管理员的权限操作数据库;如果攻击者利用SQI注入执行一些系统的命令的话,他们可以获得整个系统的控制权,后果可想而知。 3 SQL注入的安全防范 (1)参数化方法 参数化方法是指在数据提交的地方不直接进行赋值,而利用参数来进行值传递。使用参数化方法,在DBMS对SQL语句完成编译后,才载入参数运行语句。即便参数的传递中含有指令,也不会被运行。 使用参数化查询技术,数据库服务器不会将参数的内容视为SQL 指令的一个组成部分来处理,在数据库系统完成对SQL 指令的编译后,再载入参数运行. 因此,即使参数中含有指令,也不会被DBMS编译运行。示例1: …… sql.CommandText

文档评论(0)

1亿VIP精品文档

相关文档