Escolhendo a abordagem segura para entrada do usuário
Um pipeline recebe de uma configuração do usuário o nome de um produto para filtrar uma consulta SQL. Sua colega sugere duas abordagens:
Abordagem A usa params (renderização com Jinja):
SQLExecuteQueryOperator(
sql="SELECT * FROM orders WHERE product = '{{ params.product }}'",
params={"product": user_input},
)
Abordagem B usa parameters (binding no nível do banco):
SQLExecuteQueryOperator(
sql="SELECT * FROM orders WHERE product = $product",
parameters={"product": user_input},
)
Qual abordagem é segura contra injeção quando o nome do produto vem de uma fonte não confiável?
Este exercicio faz parte do curso
Criando Pipelines de Dados com Airflow
exercicio interativo prático
Transforme teoria em prática com um dos nossos exercicio interativos
Iniciar exercicio