防止sql注入mysqldb python3.6 [重复]

dldeef67  于 2023-04-04  发布在  Python
关注(0)|答案(1)|浏览(108)

此问题在此处已有答案

How to use variables in SQL statement in Python?(5个答案)
5年前关闭。
这是我在python3.6中使用MySQLdb的脚本

import MySQLdb

# start connection
db = MySQLdb.connect("localhost", "root", "asdf", "projecten")

# create cursor
c = db.cursor()

# insert multiple records using a tuple
cities = [
    ('Boston', 'MA', 600000),
    ('Chicago', 'IL', 2700000),
    ('Houston', 'TX', 2100000),
    ('Phoenix', 'AZ', 1500000)
]

# sql statement
sql = "INSERT INTO projecten.population(city, state, population) VALUES(%s, %s, %s)"

# insert data into table with list cities
c.executemany(sql, cities)

# commit changes
db.commit()

# close connection
db.close()

这对sql注入安全吗,因为有些人使用?而不是%s,但在python3.6上不起作用

ckocjqey

ckocjqey1#

Bruno says in an answer相关问题:
为了避免注入,使用execute%s代替每个变量,然后通过列表或元组传递值作为execute的第二个参数。
按照这个建议,你可以像这样创建你的SQL:

sql ="""INSERT INTO projecten.population (city, state, population)
      VALUES (%s, %s, %s)"""

c.executemany(sql, cities)

这是一个比你现在所拥有的更安全的方法。

相关问题