ユーザー入力に対して安全な方法を選ぶ
あるパイプラインでは、SQLクエリのフィルタリングにユーザー設定から取得した製品名を使用します。同僚から次の2つのアプローチが提案されました。
アプローチA は params(Jinja レンダリング)を使用します。
SQLExecuteQueryOperator(
sql="SELECT * FROM orders WHERE product = '{{ params.product }}'",
params={"product": user_input},
)
アプローチB は parameters(DBレベルのバインディング)を使用します。
SQLExecuteQueryOperator(
sql="SELECT * FROM orders WHERE product = $product",
parameters={"product": user_input},
)
信頼できないユーザー入力から製品名を受け取る場合、インジェクション攻撃に対して安全なのはどちらのアプローチですか?
この演習はコースの一部です
