为了防止MySQL的INSERT语句受到SQL注入攻击,你需要使用参数化查询或预处理语句。这样可以确保用户提供的数据被当作参数处理,而不是SQL代码的一部分。下面是使用Python和MySQL Connector库进行参数化查询的示例:
import mysql.connector
# 创建数据库连接
cnx = mysql.connector.connect(user='your_username', password='your_password', host='localhost', database='your_database')
cursor = cnx.cursor()
# 定义要插入的数据
data = ('John Doe', 'john@example.com', '123-456-7890')
# 使用参数化查询
insert_query = "INSERT INTO users (name, email, phone) VALUES (%s, %s, %s)"
try:
# 执行参数化查询
cursor.execute(insert_query, data)
# 提交更改
cnx.commit()
except mysql.connector.Error as error:
print("Failed to insert data: {}".format(error))
finally:
if cursor:
cursor.close()
if cnx:
cnx.close()
在这个示例中,我们使用了参数化查询(%s
作为占位符),并将实际数据作为元组传递给execute()
函数。这样,MySQL Connector库会自动处理参数的转义和引用,从而防止SQL注入攻击。同样的方法也适用于其他编程语言和数据库库。