ตรวจสอบข้อมูลนำเข้าเพื่อหยุดการฉีด
ปฏิเสธข้อมูลที่เป็นอันตรายตั้งแต่ขอบระบบ
ตรวจสอบข้อมูลนำเข้าเพื่อหยุดการฉีด เป็นบทเรียน Flask Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Flask Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Flask Academy มีบทเรียนทั้งหมด 4 บทเรียน
อย่าเชื่อถือข้อมูลนำเข้าโดยอัตโนมัติ
ค่าทุกอย่างที่ไคลเอ็นต์ส่งมาอาจเป็นอันตรายได้ การถือว่าข้อมูลนำเข้าทั้งหมดเป็น ไม่น่าเชื่อถือ คือแนวคิดที่ช่วยป้องกันการโจมตีส่วนใหญ่
การแทรกโค้ดหมายถึงอะไร
การแทรกโค้ด เกิดขึ้นเมื่อข้อมูลนำเข้าของผู้ใช้ถูกปฏิบัติราวกับเป็นโค้ดหรือคำสั่ง ผู้โจมตีจะแอบใส่คำสั่งลงในคำค้นหาหรือเชลล์
การแทรก SQL ในบรรทัดเดียว
การนำข้อมูลเข้าไปต่อใน SQL โดยตรงคือข้อผิดพลาดแบบคลาสสิก ค่าที่สร้างขึ้นเป็นพิเศษอาจเขียนทับ คำค้นหา ของคุณและดึงข้อมูลทั้งตารางออกมา
db.execute("SELECT * FROM users WHERE name = '" + name + "'")ใช้คำค้นหาที่มีพารามิเตอร์
วิธีแก้คือส่งค่าเป็น พารามิเตอร์ และห้ามต่อสตริงเข้าด้วยกัน ไดรเวอร์จะทำการหลีกอักขระให้คุณอย่างปลอดภัย
db.execute("SELECT * FROM users WHERE name = ?", (name,))ORM ช่วยได้
เมื่อใช้ SQLAlchemy คุณจะใช้ filter_by และค่าที่ผูกไว้ ทำให้คำค้นหามีพารามิเตอร์เป็นค่าเริ่มต้น และทำการแทรกโค้ดได้ยากขึ้นมาก
User.query.filter_by(name=name).first()ตรวจสอบรูปแบบและชนิดข้อมูล
ตรวจสอบว่าข้อมูลนำเข้าตรงตามที่คาดไว้ก่อนนำไปใช้ ยืนยัน ชนิดข้อมูล และช่วงค่า เพื่อไม่ให้สตริงแทรกเข้ามาในตำแหน่งที่ควรเป็นตัวเลข
age = request.args.get("age", type=int)ใช้รายการอนุญาตแทนรายการปฏิเสธ
การระบุค่าจำนวนน้อยที่ยอมรับได้ดีกว่าการคอยติดตามค่าที่ไม่ดีทุกค่า รายการอนุญาต จะปฏิเสธทุกสิ่งที่คุณไม่ได้อนุญาตไว้อย่างชัดเจน
ตรวจสอบด้วยสคีมา
ไลบรารีสคีมาอย่าง Marshmallow จะตรวจสอบฟิลด์ให้คุณ และจะแจ้ง ValidationError เมื่อข้อมูลที่ส่งมามีรูปแบบไม่ถูกต้อง
data = UserSchema().load(request.get_json())หลีกอักขระผลลัพธ์เพื่อป้องกัน XSS
การแทรกโค้ดอาจเกิดขึ้นใน HTML ได้เช่นกัน การหลีกอักขระอัตโนมัติของ Jinja2 จะเปลี่ยนข้อความผู้ใช้เป็นอักขระที่ปลอดภัย เพื่อไม่ให้สคริปต์ทำงานบนหน้าเว็บ
ระวังตัวกรอง safe
การทำเครื่องหมายเนื้อหาด้วยตัวกรอง safe จะปิดการหลีกอักขระ ให้ทำเช่นนี้เฉพาะกับข้อความที่คุณเชื่อถือได้อย่างสมบูรณ์ และห้ามใช้กับข้อมูลนำเข้าดิบจากผู้ใช้
ปฏิเสธตั้งแต่เนิ่น ๆ ที่ขอบเครือข่าย
ตรวจสอบข้อมูลทันทีที่มาถึง ก่อนที่ข้อมูลจะสัมผัสตรรกะของคุณ การล้มเหลวอย่าง รวดเร็ว พร้อมสถานะ 400 จะช่วยไม่ให้ข้อมูลนำเข้าที่ไม่ดีแพร่กระจาย
ตรวจสอบอย่างรวดเร็ว
เลือกเทคนิคที่หยุดการแทรก SQL
ทบทวน
คุณเรียนรู้ที่จะไม่เชื่อถือข้อมูลนำเข้า หยุดการแทรก SQL ด้วย คำค้นหาที่มีพารามิเตอร์ ตรวจสอบด้วยสคีมา ใช้รายการอนุญาต และหลีกอักขระผลลัพธ์แล้ว เป็นงานด้านความปลอดภัยที่ยอดเยี่ยม
คำถามที่พบบ่อย
บทเรียน “ตรวจสอบข้อมูลนำเข้าเพื่อหยุดการฉีด” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “ตรวจสอบข้อมูลนำเข้าเพื่อหยุดการฉีด” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Flask Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Flask Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “ตรวจสอบข้อมูลนำเข้าเพื่อหยุดการฉีด”
ปฏิเสธข้อมูลที่เป็นอันตรายตั้งแต่ขอบระบบ คุณปฏิบัติ Flask Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Flask Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Flask Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน
บทเรียน “ตรวจสอบข้อมูลนำเข้าเพื่อหยุดการฉีด” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Flask Academy นี้ได้ไหม
ได้ บทเรียน Flask Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- จำกัดอัตราคำขอด้วย Flask-Limiter
- กำหนดค่า CORS สำหรับไคลเอนต์เบราว์เซอร์
- ส่วนหัวความปลอดภัยและ HTTPS
- ตรวจสอบข้อมูลนำเข้าเพื่อหยุดการฉีด