Python SQLite3 SQL 注入漏洞
SQL 注入漏洞允許攻擊者對資料庫執行惡意 SQL 查詢。當使用者輸入未經適當驗證和轉義而直接合併到 SQL 查詢中時,可能會出現這些漏洞。
程式碼漏洞
由於以下原因,提供的程式碼片段容易受到 SQL 注入攻擊使用 .format 動態建構 SQL 查詢。例如,考慮以下語句:
cursor.execute("insert into user(username, password)" " values('{0}', '{1}')".format(username, password))
如果使用者名稱或密碼包含惡意字元(例如單引號),它們可以被解釋為 SQL 查詢的一部分。這可能允許攻擊者執行任意 SQL 命令,例如刪除表或插入惡意資料。
修正
要解決此漏洞,需要使用參數化查詢而不是字串插值。參數化查詢透過使用佔位符 (?) 表示使用者輸入並允許資料庫引擎處理這些值的轉義來防止 SQL 注入。例如:
cursor.execute("insert into user(username, password) values(?, ?)", (username, password))
透過使用參數化查詢,資料庫引擎將確保輸入中的任何特殊字元都被正確轉義,從而防止 SQL 注入攻擊。每當在 SQL 查詢中使用使用者輸入時,都必須使用參數化查詢。
以上是Python 的 SQLite3 中參數化查詢如何防止 SQL 注入?的詳細內容。更多資訊請關注PHP中文網其他相關文章!