首頁 > 資料庫 > mysql教程 > 如何安全使用WHERE IN語句防止SQL注入?

如何安全使用WHERE IN語句防止SQL注入?

DDD
發布: 2025-01-04 03:26:40
原創
553 人瀏覽過

How Can I Safely Use WHERE IN Statements to Prevent SQL Injection?

安全處理IN 查詢:了解WHERE IN 語句

使用資料庫查詢時,根據一組值檢索特定記錄是常見要求。 WHERE IN 語句提供了一個有效的方法來實現此目的。

資料庫架構與意圖

考慮以下資料庫table:

CREATE TABLE IF NOT EXISTS tab (_id integer PRIMARY KEY AUTOINCREMENT, obj text NOT NULL);
登入後複製

您打算擷取obj 所在的記錄列值與變數清單匹配,如果處理不當,可能容易受到SQL 注入的攻擊。

第一種方法:手動方法

嘗試使用手動建構查詢list_of_vars 和 join()產生佔位符字串可能會因數量不符而引發錯誤

statement = "SELECT * FROM tab WHERE obj IN (?);"
c.execute(statement, "'"+"','".join(list_of_vars)+"'")
登入後複製

推薦方法:參數化查詢

要安全地執行IN 查詢,請使用參數佔位符(?) 並將變數清單綁定為參數。使用 format 方法建立語句以產生適當數量的佔位符:

statement = "SELECT * FROM tab WHERE obj IN ({0})".format(', '.join(['?'] * len(list_of_vars)))
c.execute(statement, list_of_vars)
登入後複製

透過傳遞 list_of_vars 作為參數值列表,可以確保正確的綁定並防止 SQL 注入漏洞。

以上是如何安全使用WHERE IN語句防止SQL注入?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板