ÎncepețiÎncepe gratuit

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

Vezi cursul

Exercițiu interactiv practic

Transformă teoria în practică cu unul dintre exercițiile noastre interactive

Începe exercițiul