首頁  >  文章  >  後端開發  >  如何安全地將清單插入 MySQL IN 子句?

如何安全地將清單插入 MySQL IN 子句?

Susan Sarandon
Susan Sarandon原創
2024-11-24 03:10:131002瀏覽

How to Safely Insert Lists into MySQL IN Clauses?

將清單安全地插入MySQL IN 子句

本文探討了一種在MySQL 資料庫中將清單插入IN 子句的高效且安全的方法。雖然傳統方法是將清單對應到字串並直接插入,但由於需要手動引用和轉義,這種方法存在 SQL 注入的風險。

要避免此漏洞,更安全的方法是使用直接將清單作為 MySQL 查詢中的參數。以下程式碼示範了此方法:

format_strings = ','.join(['%s'] * len(list_of_ids))
cursor.execute("DELETE FROM foo.bar WHERE baz IN (%s)" % format_strings,
                tuple(list_of_ids))

此程式碼完成以下任務:

  • 避免手動引用:透過使用'%s' 格式說明符,list_of_ids中的資料會自動作為參數傳遞給MySQL的驅動程序,無需手動引用。
  • 防止 SQL 注入: 資料作為參數插入,確保它不會被解釋為查詢的一部分。這使得查詢免受 SQL 注入攻擊。
  • 支援任何字符:資料可以包含任何字符,無需刪除或引用。

重要的是請注意,此方法依賴 MySQL 驅動程式安全處理參數的能力。只要資料作為參數正確傳遞,查詢就不會受到 SQL 注入的影響。

以上是如何安全地將清單插入 MySQL IN 子句?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn