เลือกวิธีที่ปลอดภัยสำหรับ 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
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำจริง
เปลี่ยนทฤษฎีให้เป็นการลงมือทำด้วยแบบฝึกหัดเชิงโต้ตอบหนึ่งในของเรา
เริ่มแบบฝึกหัด