ホームページ >バックエンド開発 >Python チュートリアル >SQL インジェクションを防ぐために MySQL IN 句でリストを安全に使用する方法

SQL インジェクションを防ぐために MySQL IN 句でリストを安全に使用する方法

Barbara Streisand
Barbara Streisandオリジナル
2024-11-25 20:47:14952ブラウズ

How to Safely Use Lists in MySQL IN Clauses to Prevent SQL Injection?

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。