ПочатиПочніть безкоштовно

Вибір безпечного підходу для користувацького введення

Конвеєр приймає назву продукту з користувацької конфігурації, щоб відфільтрувати 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

Переглянути курс

Практична інтерактивна вправа

Перетворіть теорію на практику за допомогою однієї з наших інтерактивних вправ

Почати вправу