Välja det säkra tillvägagångssättet för användarindata
En pipeline tar emot ett produktnamn från användarkonfigurationen för att filtrera en SQL-fråga. Din kollega föreslår två tillvägagångssätt:
Tillvägagångssätt A använder params (Jinja-rendering):
SQLExecuteQueryOperator(
sql="SELECT * FROM orders WHERE product = '{{ params.product }}'",
params={"product": user_input},
)
Tillvägagångssätt B använder parameters (databas-nivå-bindning):
SQLExecuteQueryOperator(
sql="SELECT * FROM orders WHERE product = $product",
parameters={"product": user_input},
)
Vilket tillvägagångssätt är säkert mot SQL-injektion när produktnamnet kommer från opålitlig användarindata?
Den här övningen är en del av kursen
Bygg datapipelines med Airflow
Interaktiv övning med praktiskt arbete
Gör teori till handling med en av våra interaktiva övningar
Starta övningen