python中如何防止sql注入

SQL注入简介

SQL注入是比较常见的网络攻击方式之一,它不是利用操作系统的BUG来实现攻击,而是针对程序员编程时的疏忽,通过SQL语句,实现无帐号登录,甚至篡改数据库。sql注入中最常见的就是字符串拼接,研发人员对字符串拼接应该引起重视。

SQL注入攻击的总体思路

1.寻找到SQL注入的位置

2.判断服务器类型和后台数据库类型

3.针对不通的服务器和数据库特点进行SQL注入攻击

错误用法:

1 sql = “select id,type,name from xl_bugs where id = %s and type = %s” % (id, type)
2 cur.execute(sql)
这种用法就是常见的拼接字符串导致sql注入漏洞的产生。看到这个突然想到上个礼拜drupal水滴的那个漏洞,其并不是预编译语句被绕过了。而是在构造带入的预编译语句的时候拼接了用户输入字符串,还未带入查询的预编译语句已经被注入了,之后带入正确的参数,最后被注入了

正确用法:

cursor.execute('select name,password fromt b1 where name=%s and password=%s',('min',1234))
result= cursor.fetchone()
print(result)

execute()函数本身就有接受SQL语句变量的参数位,只要正确的使用(直白一点就是:使用”逗号”,而不是”百分号”)就可以对传入的值进行correctly转义,从而避免SQL注入的发生。

猜你喜欢

转载自blog.csdn.net/qq_34702440/article/details/83216357