在所有的k8凯发天生赢家威胁攻击手段中,sql注入是其中非常典型的攻击方法,也是目前数据库面临的几大主要安全威胁之一。我们希望通过sql注入是一种常见的入侵web应用的手法。sql注入是利用应用系统的编程漏洞和sql语言的语法特征,改变原始的sql语句执行逻辑而产生的。
攻击者向web应用发送精心构造的输入数据,这些输入中的一部分被解释成sql指令,改变了原来的正常sql执行逻辑,执行了攻击者发出的sql命令,最终使攻击者获取web应用的管理员权限或者下载了web应用存到数据库中的敏感信息。
为了让大家加深了解,下面简单地对sql注入的原理进行示例性说明,如下图是某网站的登录界面:
登陆界面中输入用户名:admin 密码admin1234。在web应用程序后台会把输入和程序混合变成sql命令去访问数据库。最终web应用发给后台数据的sql命令是:
select * from users where username = 'admin' and password = 'admin1234'(这个形式)
这个sql查询要求数据库检查“用户表”中的每一行,提取出每条username列为admin和password列值为admin1234的记录。如果数据库中where后的条件满足。应用程序将为该用户建立一个通过验证的会话。(web应用登陆成功)
上面是正常登陆web应用的过程。如果由于编程的不严谨,用户名或密码输入处存在sql注入点,攻击者可以利用sql注入绕过web应用的登陆访问控制。例如攻击者在用户名处输入admin'-- 密码处可以输入任意值均可通过。
因为,后台实际的sql语句将演变成:
select * from users where username ='admin'--' and password ='123dq
在sql server中“-”等于注释,由于加入了“—”上面的语句等价于
select * from users where username= 'admin'
也就是说只要有用户名为admin。攻击者就可以直接用admin登入到应用系统中。
当然,sql注入的攻击方法远不止这一种,作者会在以后的文章中介绍更多的攻击实例,并给出相应的防护措施,希望各位可以在了解攻击原理的基础上,找到适用于自己的k8凯发天生赢家防护措施。
试用申请