НачатьНачать бесплатно

Выбор безопасного подхода для пользовательского ввода

Пайплайн принимает название продукта из пользовательской конфигурации, чтобы отфильтровать 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},
)

Какой подход защищён от SQL-инъекций, если название продукта поступает из ненадёжного пользовательского ввода?

Это упражнение является частью курса

Построение пайплайнов данных с Airflow

Посмотреть курс

Практическое интерактивное упражнение

Превратите теорию в практику с помощью одного из наших интерактивных упражнений

Начать упражнение