ホームページ  >  記事  >  バックエンド開発  >  MySQL の IN 句にリストを安全に挿入するにはどうすればよいですか?

MySQL の IN 句にリストを安全に挿入するにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-11-24 03:10:131028ブラウズ

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 のドライバーにパラメーターとして渡されるため、手動での操作は不要になります。 quoting.
  • SQL インジェクションを防止します: データはパラメーターとして挿入され、クエリの一部として解釈されないようにします。これにより、クエリは SQL インジェクション攻撃の影響を受けなくなります。
  • 任意の文字をサポート: データには、削除や引用符を必要とせずに任意の文字を含めることができます。

次のことが重要です。このメソッドは、パラメータを安全に処理する MySQL ドライバの機能に依存していることに注意してください。データがパラメーターとして正しく渡される限り、クエリは SQL インジェクションから安全なままです。

以上がMySQL の IN 句にリストを安全に挿入するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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