Вибір безпечного підходу для користувацького введення
Конвеєр приймає назву продукту з користувацької конфігурації, щоб відфільтрувати SQL‑запит. Колега пропонує два підходи:
Підхід A використовує params (рендеринг Jinja):
SQLExecuteQueryOperator(
sql="SELECT * FROM orders WHERE product = '{{ params.product }}'",
params={"product": user_input},
)
Підхід B використовує parameters (привʼязка на рівні БД):
SQLExecuteQueryOperator(
sql="SELECT * FROM orders WHERE product = $product",
parameters={"product": user_input},
)
Який підхід є безпечним щодо інʼєкцій, якщо назва продукту надходить із ненадійного користувацького вводу?
Ця вправа є частиною курсу
Створення конвеєрів даних з Airflow
Практична інтерактивна вправа
Перетворіть теорію на практику за допомогою однієї з наших інтерактивних вправ
Почати вправу