ユーザー入力など、信頼できないソースからデータをフェッチする場合、SQL インジェクション攻撃を防ぐことが重要です。 Python では、SQLite を使用すると、カーソルのexecute() メソッドを使用してデータベースを効果的に保護できます。
次のコード スニペットを考えてみましょう。
def setLabel( self, userId, refId, label ): self._db.cursor().execute( """ UPDATE items SET label = ? WHERE userId IS ? AND refId IS ?""", ( label, userId, refId) ) self._db.commit()
この例では、ラベルは次から取得されます。ユーザーを指定し、SQL クエリに直接挿入します。これにより、SQL インジェクション攻撃に対する脆弱性が露呈します。
操作を保護するには、次のようにパラメータを指定してexecute() メソッドを使用します。
def setLabel( self, userId, refId, label ): self._db.cursor().execute( """ UPDATE items SET label = ? WHERE userId IS ? AND refId IS ?""", ( label, userId, refId) ) self._db.commit()
パラメータは SQLite によって自動的にエスケープされ、クエリに組み込まれます。 。これにより、攻撃者がデータベースに悪意のあるコードを挿入するのを防ぎます。この方法を採用すると、SQL インジェクション攻撃からアプリケーションを効果的に保護できます。
以上がPython で SQLite を使用するときに SQL インジェクション攻撃を防ぐにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。