Inizia subitoInizia gratis

Scegliere l'approccio sicuro per l'input utente

Una pipeline accetta un nome prodotto dalla configurazione utente per filtrare una query SQL. Un tuo collega suggerisce due approcci:

Approach A usa params (rendering Jinja):

SQLExecuteQueryOperator(
    sql="SELECT * FROM orders WHERE product = '{{ params.product }}'",
    params={"product": user_input},
)

Approach B usa parameters (binding a livello di DB):

SQLExecuteQueryOperator(
    sql="SELECT * FROM orders WHERE product = $product",
    parameters={"product": user_input},
)

Quale approccio è sicuro rispetto all'injection quando il nome del prodotto proviene da input utente non affidabile?

Questo esercizio fa parte del corso

Creare data pipeline con Airflow

Visualizza corso

esercizio interattivo pratico

Trasforma la teoria in pratica con uno dei nostri esercizi interattivi

Inizia esercizio