详解SQL注入的原理

本文介绍了SQL注入的原理,即攻击者利用用户可控参数构造恶意SQL代码,导致数据库安全漏洞。通过JDBC示例说明了攻击过程。SQL注入在OWASP排行榜中高居不下,如2017年雅虎信息泄露事件所示,强调了防范此类漏洞的重要性。
摘要由CSDN通过智能技术生成

SQL注入原理:攻击者在用户输入字段中插入

恶意代码

,欺骗数据库执行SQL命令,从而窃取、篡改或破坏各类敏感数据。SQL注入漏洞最主要的形成原因是在进行数据交互中,当前端的数据传入后端进行处理时,由于没有做严格的判断,导致其传入的“数据”在拼接到SQL语句中之后,由于其特殊性,被当作SQL语句的一部分被执行,从而导致数据库受损(被脱库、被删除、甚至整个服务器权限沦陷)。

发生条件:参数用户可控:前端传给后端的参数用户可控;参数带入数据库查询:传入的参数拼接到SQL语句中,且带入数据库中查询。

例子:

例如我们用JDBC来操作MySQL数据库时,我们一般会在Java程序中写上用户名和密码,然后进行查询操作或增删改操作,他就会在SQL语句或密码中写上形如:“

SELECT *FROM employees WHERE id=XXX or 1=1

SELECT *FROM employees WHERE username='XXX' and password='1' or 'a'='a'

”的语句;他也有可能拆分来写,让程序在自检阶段感觉毫无问题,但Java程序将SQL语句传入数据库时,就会拼接成形如上述的语句,下面来讲解第一个语句:

SELECT *是指查询所有信息,FROM employees是指查询的数据都来自employees表,WHERE是数据筛选条件,主要就是这个筛选条件,他会使查询语句在ID为XXX

或当1=1

的时候执行,由于1本身就等于1,这个条件一直成立,第二个语句同理。如此攻击者就会绕过密码校验或SQL筛选条件,将所有信息呈现给攻击者,实现SQL注入,使个人和企业的信息安全无法得到有效的保障。

SQL注入在OWASP发布的top10排行榜中一直是危害排名极高的漏洞,数据库注入一直是web中一个令人头疼的问题。严重的会使企业直接陷入破产危机。这并不是危言耸听,2017年十月,著名的互联网公司雅虎发生信息泄露事件,雅虎和调查方曾表示,“得到国家资助的黑客”发动了攻击,导致30亿用户的账户信息被泄露。这个数字在2016年12月的初步调查中还只是10亿,当时就已认为“超过10亿个用户帐户”可能是受到了雅虎漏洞的影响。这一起事件直接导致雅虎会面对40多个联邦或地方法庭的诉讼,让本就处在低谷的雅虎无力回天。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值