始める無料で始める

ユーザー入力に対して安全な方法を選ぶ

あるパイプラインでは、SQLクエリのフィルタリングにユーザー設定から取得した製品名を使用します。同僚から次の2つのアプローチが提案されました。

アプローチAparams(Jinja レンダリング)を使用します。

SQLExecuteQueryOperator(
    sql="SELECT * FROM orders WHERE product = '{{ params.product }}'",
    params={"product": user_input},
)

アプローチBparameters(DBレベルのバインディング)を使用します。

SQLExecuteQueryOperator(
    sql="SELECT * FROM orders WHERE product = $product",
    parameters={"product": user_input},
)

信頼できないユーザー入力から製品名を受け取る場合、インジェクション攻撃に対して安全なのはどちらのアプローチですか?

この演習はコースの一部です

Airflow によるデータパイプラインの構築

コースを見る

実践的なインタラクティブ演習

理論を実践に変える、インタラクティブな演習のひとつをお試しください

演習を開始する