Bắt đầu ngayBắt đầu miễn phí

Chọn cách an toàn khi nhận đầu vào từ người dùng

Một pipeline nhận tên sản phẩm từ cấu hình do người dùng cung cấp để lọc một truy vấn SQL. Đồng nghiệp của bạn đề xuất hai cách:

Cách A dùng params (Jinja rendering):

SQLExecuteQueryOperator(
    sql="SELECT * FROM orders WHERE product = '{{ params.product }}'",
    params={"product": user_input},
)

Cách B dùng parameters (ràng buộc ở mức DB):

SQLExecuteQueryOperator(
    sql="SELECT * FROM orders WHERE product = $product",
    parameters={"product": user_input},
)

Cách nào an toàn trước tấn công chèn lệnh (injection-safe) khi tên sản phẩm đến từ nguồn người dùng không đáng tin cậy?

Bài tập này là một phần của khóa học

Xây dựng Data Pipeline với Airflow

Xem khóa học

Bài tập tương tác thực hành

Biến lý thuyết thành hành động với một trong các bài tập tương tác của chúng tôi

Bắt đầu bài tập