เริ่มต้นใช้งานเริ่มต้นใช้งานได้ฟรี

เลือกวิธีที่ปลอดภัยสำหรับ input จากผู้ใช้

Pipeline รับชื่อสินค้าจากการกำหนดค่าของผู้ใช้ เพื่อนำไปกรองคิวรี SQL เพื่อนร่วมทีมเสนอสองแนวทางดังนี้:

แนวทาง A ใช้ params (Jinja rendering):

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

แนวทาง B ใช้ parameters (DB-level binding):

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

แนวทางใดปลอดภัยจาก injection เมื่อชื่อสินค้ามาจาก input ของผู้ใช้ที่ไม่น่าไว้วางใจ?

แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร

การสร้าง Data Pipeline ด้วย Airflow

ดูคอร์ส

แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำจริง

เปลี่ยนทฤษฎีให้เป็นการลงมือทำด้วยแบบฝึกหัดเชิงโต้ตอบหนึ่งในของเรา

เริ่มแบบฝึกหัด