De veilige aanpak kiezen voor gebruikersinvoer
Een pipeline accepteert een productnaam uit de gebruikersconfiguratie om een SQL-query te filteren. Je collega stelt twee aanpakken voor:
Aanpak A gebruikt params (Jinja-rendering):
SQLExecuteQueryOperator(
sql="SELECT * FROM orders WHERE product = '{{ params.product }}'",
params={"product": user_input},
)
Aanpak B gebruikt parameters (binding op DB-niveau):
SQLExecuteQueryOperator(
sql="SELECT * FROM orders WHERE product = $product",
parameters={"product": user_input},
)
Welke aanpak is veilig tegen injectie als de productnaam afkomstig is van onbetrouwbare gebruikersinvoer?
Deze oefening maakt deel uit van de cursus
Data-pijplijnen bouwen met Airflow
Interactieve oefening met praktijkervaring
Zet theorie om in actie met een van onze interactieve oefeningen
Begin oefening