开始使用免费开始使用

为用户输入选择安全的方法

某条管道需要从用户配置中接收一个产品名称,用于筛选 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 构建数据流水线

查看课程

动手互动练习

通过我们的互动练习之一,将理论转化为实践

开始练习