為了防止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注入攻擊。同樣的方法也適用于其他編程語言和數據庫庫。