ホームページ > データベース > mysql チュートリアル > パラメーター化されたクエリは、Python の SQLite インタラクションでの SQL インジェクションをどのように防ぐことができますか?

パラメーター化されたクエリは、Python の SQLite インタラクションでの SQL インジェクションをどのように防ぐことができますか?

Barbara Streisand
リリース: 2025-01-05 00:17:40
オリジナル
518 人が閲覧しました

How Can Parameterized Queries Prevent SQL Injection in Python's SQLite Interactions?

Python での SQL インジェクションからの保護

問題:

次の Python スクリプトがあります。 SQLite データベース内の char(80) 値を更新します。文字列値はユーザーから直接取得され、JSON ペイロードとしてスクリプトに渡されます。このアプローチが SQL インジェクション攻撃に対して脆弱であることは承知しています。

解決策:

SQL インジェクションから保護するために、更新操作でパラメーター化されたクエリを使用できます。パラメータ化されたクエリを使用すると、値をクエリ文字列に直接含めずに SQL ステートメントに渡すことができます。これにより、悪意のある入力による SQL 構文の中断が防止されます。

Python sqlite3 ライブラリは、? を介したパラメーター化されたクエリをサポートしています。プレースホルダー。値を、クエリ内のプレースホルダーに対応する値のタプルとして実行メソッドに渡すことができます。

改訂されたコード:

ここに、パラメータ化されたクエリを使用する setLabel メソッド:

def setLabel( self, userId, refId, label ):
    self._db.cursor().execute(
        """
        UPDATE items SET label = ? WHERE userId = ? AND refId = ?""",
        (label, userId, refId)
    )
    self._db.commit()
ログイン後にコピー

パラメータ化されたクエリを使用すると、ユーザー入力が次のようになります。 SQL ステートメントの一部ではなく値として扱われるため、SQL インジェクション攻撃を効果的に防止できます。

以上がパラメーター化されたクエリは、Python の SQLite インタラクションでの SQL インジェクションをどのように防ぐことができますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート