Comece agoraComece grátis

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

Ver curso

exercicio interativo prático

Transforme teoria em prática com um dos nossos exercicio interativos

Iniciar exercicio