SQL注入-01-什么是SQL注入?

什么是SQL注入?

在这里插入图片描述

1、正常的web端口访问

正常访问是web传入程序设计者所希望的参数值,由程序查询数据库完成处理后,呈现结果页面给用户。

2、SQL注入是如何访问?

(1)SQL注入也是正常的web端口访问

(2)只是传入的参数值并非是程序设计者所希望的,而是传入了嵌套SQL代码的参数值

(3)参数值利用程序处理注入者的逻辑,按注入者的期望执行数据库查询

SQL注入:是通过应用程序把带有SQL代码的参数传递给数据库引擎。

理解:程序设计者缺乏安全意识,没有考虑到用户可能是黑客的情况,黑客会使用SQL数据库的查询语句到参数中,使得想要的数据显示在网站页面中,获取数据库中的数据,从而导致了数据泄露。

为什么要深入了解SQL注入?

1、SQL注入危害大

黑客最终的目标是数据,SQL注入是直达数据库引擎,甚至提权后可以与系统层交互,敏感数据可能被泄露、破坏的风险。

2、SQL注入隐秘性强

SQL注入也是正常的web端口访问,系统或者数据库管理员不易发觉,可能被攻击者长期控制系统或者数据库。

3、SQL注入具有普遍性

SQL关系数据库行业的通用标准,SQL注入不仅是MySQL的问题,也是其他使用SQL的数据库的问题,有证据表明,60%以上有网站具有SQL注入漏洞。

4、知己知彼,目标为防

深入了解SQL注入的终极目标是做好防范,提高数据安全意识,把数据安全提高到一定的战略高度。

理解:SQL注入总的来说是程序设计的漏洞,没有办法去彻底解决掉,因为它也是正常的访问数据库的操作,无法准确阻止,只能尽可能的想到黑客能进行的SQL注入攻击的手段,对黑客输入的数据进行合法性、安全性的检查,从而提前将其操作阻止。

程序端SQL注入攻击原理

1、正常的访问

$sql="SELECT" * FROM users WHERE login='$uname' AND password='$pwd'

PHP程序传入结果参数:
$uname=‘huan’
$pwd=‘hxf123’

结果:

`SELECT * FROM users WHERE login = 'huan' AND password='hxf123'`

2、SQL注入访问

PHP程序传入结果参数:
$uanme=admin’’ or 1=1 --+
$password=‘hxf123’

结果:

SELECT *FROM users WHERE login="admin" or 1=1 --+ AND password='hxf123'

在这里插入图片描述
or 1=1–+又被称为万能密码,因为在构成SQL查询语句时,–+注释掉后面的语句了,使得有效的语句为:

select * from users where login=“admin” or 1=1;
理解:黑客利用or 1=1 这个永真式结合”–“注释掉后面的查询语句,使用这次SQL注入的查询语句为真,服务器返回给客户端是真值,这次登录成功认证,从而登录客户端。

SQL注入漏洞的根本原因

(1)SQL注入漏洞是应用程序的问题,而不是系统或者数据库的问题。

SQL注入本质的原因是人对数据安全的意识薄弱。或者即使有安全的意识,而程序员对如何防范无从下手。因此导致程序没有时间对用户输入数据的合法性进行检查,对传入参数的安全性没有完全的过滤。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AnQ_xiao

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值