MySQL IN 句のリストの安全な組み込み
データベースのセキュリティが最も重要であり、SQL インジェクションを回避することが重要です。 MySQL IN 句で値のリストを使用する場合は、安全に行うことが重要です。
問題:
リストで使用する文字列へのリストの展開IN 句は SQL の影響を受けやすいインジェクション。
# Vulnerable cursor.execute("DELETE FROM foo.bar WHERE baz IN ('%s')" % foostring)
解決策:
SQL インジェクションを防ぐには、値のリストをパラメータとして直接使用します。
# Safe format_strings = ','.join(['%s'] * len(list_of_ids)) cursor.execute("DELETE FROM foo.bar WHERE baz IN (%s)" % format_strings, tuple(list_of_ids))
Thisこのアプローチでは、値のリストをクエリ文字列に埋め込むのではなくパラメータとして渡し、効果的にインジェクションを防ぎます。
データをパラメータとして MySQL ドライバに直接渡すことにより、手動での引用符やエスケープの必要性がなくなり、データベース操作の整合性が確保されます。
以上がSQL インジェクションを防ぐために MySQL IN 句でリストを安全に使用する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。