专栏名称: 马哥Linux运维
马哥linux致力于linux运维培训,连续多年排名第一,订阅者可免费获得学习机会和相关Linux独家实战资料!
目录
相关文章推荐
运维  ·  阿里云核心域名被劫持 ·  11 小时前  
51好读  ›  专栏  ›  马哥Linux运维

Python如何防止sql注入

马哥Linux运维  · 公众号  · 运维  · 2017-03-17 08:01

正文

请到「今天看啥」查看全文


首先咱们定义一个类来处理mysql的操作:

这个类有问题吗?

答案是:有!

这个类是有缺陷的,很容易造成sql注入,下面就说说为何会产生sql注入。

为了验证问题的真实性,这里就写一个方法来调用上面的那个类里面的方法,如果出现错误会直接抛出异常。


这个方法非常简单:

一个最常见的select查询语句,也使用了最简单的字符串拼接组成sql语句,很明显传入的参数 testUrl 可控,要想进行注入测试,只需要在testUrl的值后面加上单引号即可进行sql注入测试。

这个不多说,肯定是存在注入漏洞的,脚本跑一遍,看啥结果:

(1064, "You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ''t.tips''' at line 1")

回显报错,很眼熟的错误,这里我传入的测试参数是:

t.tips'

下面再说一种导致注入的情况,对上面的方法进行稍微修改:

这个方法里面没有直接使用字符串拼接,而是使用了 %s 来代替要传入的参数,看起来是不是非常像预编译的sql?

那这种写法能不能防止sql注入呢?测试一下便知道,回显如下:







请到「今天看啥」查看全文