在Python 字串格式中使用SQL 通配符和LIKE 運算子
將SQL 通配符和LIython 運算子插入具有挑戰性。本文提供了嘗試使用 MySQLdb 執行 MySQL 查詢時遇到的常見錯誤的解決方案。
來自MySQLdb 的錯誤
嘗試3 和4 從MySQLdb 回傳錯誤,指示「格式字串參數不足。」出現這種情況是因為Python 中的字元字串格式化運算子將% 符號解釋為格式說明符。
SQL 注入漏洞
顯示的前四次嘗試容易受到攻擊SQL注入攻擊。應對使用者輸入(例如查詢變數)進行清理或轉義,以防止執行惡意 SQL。
正確方法
建議的方法是使用佔位符而不是字串格式。以下是範例:
curs.execute("""SELECT tag.userId, count(user.id) as totalRows FROM user INNER JOIN tag ON user.id = tag.userId WHERE user.username LIKE %s""", ('%' + query + '%',))
兩個參數傳遞給execute():
此方法確保 SQL語句有效且可以防止 SQL 注入。
以上是如何在 Python 的 `MySQLdb` 中安全地使用 SQL 通配符以避免注入?的詳細內容。更多資訊請關注PHP中文網其他相關文章!