谈论SQL注入攻击的重要性

"SQL注入”是一种利用未过滤/未审核用户输入的攻击方法(“缓存溢出”和这个不同),意思就是让应用运行本不应该运行的SQL代码。黑客或者恶搞的用户,利用了程序开发人员在开发的时候没有对SQL进行严格的处理而造成的漏洞,然后输入的一些特殊符号而通过了SQL的判断,返回了本不该返回的数据到界面上,
如下图,我只想查询到第一条李德龙的数据

sql为:select * from t_huohuayuyue where t_username='李德龙' 这样在数据库执行时没有问题的,但是假如我是用户的话,我这样输入的话,这个SQL就有问题了,

我在界面文本框这样输入的话,李德龙' or '1'='1那这个SQL就成了

select * from t_huohuayuyue where t_username='李德龙' or '1'='1'

结果如下:

所以,这里就是一个典型的SQL漏洞,而且很多程序在写的时候,都没有进行很好的处理,而造成应用程序未响应,其实就是后天报错了,所以处理了,没有处理好的话,这时候,不应该出现的数据也会出现在屏幕上,当然还有很多不同的SQL注入攻击方式,比如%%,//,**,等等,这里就不一一说明了,下面我们说下在写代码的时候怎么去预防这种漏洞呢,

如下图,我在变量为字符串的后面用替换方法

这样,不管你界面怎么输,到SQL查询的时候,都能保证你的SQL是你想要的,不应该出现的就不会查到

当然,这也只是一种预防的方式,还有很多,比如在匹配我们的字符串为空的时候,我们一般的写法都是用目标字符串去匹配一个固定死的字符串,其实这样是不对的, 因为这样也是有非常大的漏洞,像这样

这样也存在很大的漏洞,因为字符串的空分为几种,null,"",'',undefined,如果变量在前面的话,我们这这样写就错了,很容易被攻击

那正确的写法是啥呢,如下图:

把目标字符串放前面,用目标的字符串去匹配变量,这样就很有效的防治了攻击,

谢谢大家

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

枯枫叶

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

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

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

打赏作者

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

抵扣说明:

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

余额充值