Choisir l'approche sécuritaire pour les entrées utilisateur
Un pipeline accepte un nom de produit à partir d'une configuration utilisateur pour filtrer une requête SQL. Votre collègue propose deux approches :
Approche A utilise params (rendu Jinja) :
SQLExecuteQueryOperator(
sql="SELECT * FROM orders WHERE product = '{{ params.product }}'",
params={"product": user_input},
)
Approche B utilise parameters (liaison au niveau de la BD) :
SQLExecuteQueryOperator(
sql="SELECT * FROM orders WHERE product = $product",
parameters={"product": user_input},
)
Laquelle est sécuritaire contre l'injection lorsque le nom du produit provient d'une source non fiable?
Cette activité fait partie du cours
Créer des pipelines de données avec Airflow
Exercice interactif pratique
Passez de la théorie à l’action grâce à l’un de nos exercices interactifs
Commencer l’exercice