Kom igångKom igång gratis

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

Visa kurs

Interaktiv övning med praktiskt arbete

Gör teori till handling med en av våra interaktiva övningar

Starta övningen