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
esercizio interattivo pratico
Trasforma la teoria in pratica con uno dei nostri esercizi interattivi
Inizia esercizio