ホームページ >バックエンド開発 >Python チュートリアル >パラメータ化されたクエリを使用して MySQL にデータを安全に挿入するにはどうすればよいですか?
データベース操作の領域では、パラメータ化されたクエリの使用は、SQL インジェクション攻撃から保護するための重要なセキュリティ対策です。 MySQLdb モジュールを使用して MySQL データベースにデータを挿入しようとすると、一部のユーザーが問題に遭遇する可能性があります。
6 つの変数を挿入しようとする次の例を考えてみましょう。 「Songs」テーブルに:
cursor.execute (""" INSERT INTO Songs (SongName, SongArtist, SongAlbum, SongGenre, SongLength, SongLocation) VALUES (var1, var2, var3, var4, var5, var6) """)
文字列補間によって SQL クエリにパラメータを挿入すると、システムが SQL インジェクションに対して脆弱になる可能性があるため、問題が発生する可能性があります。上の例は、この問題を示しています。
問題を修正し、確実に安全に挿入するには、パラメータ化されたクエリに正しい構文を使用します。
cursor.execute("INSERT INTO Songs (SongName, SongArtist, SongAlbum, SongGenre, SongLength, SongLocation) VALUES (%s, %s, %s, %s, %s, %s)", (var1, var2, var3, var4, var5, var6))
パラメータ バインディングの使用。「%s」で表されます。プレースホルダーは、入力パラメーターが正しくエスケープされ、サニタイズされていることを保証します。これにより、悪意による SQL ステートメントの操作やデータベースの侵害が防止されます。
パラメーター バインドの方法は、データベース API 実装によって異なる場合があることに注意してください。 MySQL クライアント ライブラリは、従来の「?」ではなく printf スタイルの構文を利用します。 python-sqlite などの他のフレームワークで使用されるマーカー。これらの違いを理解することは、データベースを効果的に操作するために不可欠です。
以上がパラメータ化されたクエリを使用して MySQL にデータを安全に挿入するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。