sql注入中最常见的就是字符串拼接,研发人员对字符串拼接应该引起重视,不应忽略。
错误用法1:
sql = select id, name from test where id=%d and name='%s' %(id, name)
cursor.execute(sql)
错误用法2:
sql = select id, name from test where id=+ str(id) + and name='+ name +'
cursor.execute(sql)
正确用法1:
args = (id, name)
sql = select id, name from test where id=%s and name=%s
cursor.execute(sql, args)
execute()函数本身有接受sql语句参数位的,可以通过python自身的函数处理sql注入问题。
正确用法2:
name = mysqldb.escape_string(name)
sql = select id, name from test where id=%d and name='%s' %(id, name)
cursor.execute(sql)
python模块mysqldb自带针对mysql的字符转义函数escape_string,可以对字符串转义。