Elegir el enfoque seguro para la entrada de usuario
Un pipeline acepta un nombre de producto desde la configuración del usuario para filtrar una consulta SQL. Tu colega propone dos enfoques:
Enfoque A usa params (renderizado con Jinja):
SQLExecuteQueryOperator(
sql="SELECT * FROM orders WHERE product = '{{ params.product }}'",
params={"product": user_input},
)
Enfoque B usa parameters (enlace a nivel de BD):
SQLExecuteQueryOperator(
sql="SELECT * FROM orders WHERE product = $product",
parameters={"product": user_input},
)
¿Qué enfoque es seguro frente a inyecciones cuando el nombre del producto proviene de una entrada de usuario no confiable?
Este ejercicio forma parte del curso
Creación de canalizaciones de datos con Airflow
ejercicio interactivo práctico
Convierte la teoría en práctica con uno de nuestros ejercicios interactivos
Empezar ejercicio