Alegerea abordării sigure pentru datele introduse de utilizator
Un pipeline acceptă un nume de produs din configurația utilizatorului pentru a filtra o interogare SQL. Colegul tău propune două abordări:
Abordarea A folosește params (randare Jinja):
SQLExecuteQueryOperator(
sql="SELECT * FROM orders WHERE product = '{{ params.product }}'",
params={"product": user_input},
)
Abordarea B folosește parameters (legare la nivel de bază de date):
SQLExecuteQueryOperator(
sql="SELECT * FROM orders WHERE product = $product",
parameters={"product": user_input},
)
Care abordare este sigură împotriva injecției SQL atunci când numele produsului provine dintr-o sursă de intrare neîncrezătoare?
Acest exercițiu face parte din cursul
Construirea pipeline-urilor de date cu Airflow
Exercițiu interactiv practic
Transformă teoria în practică cu unul dintre exercițiile noastre interactive
Începe exercițiul