0Pricing
Flask Academy · บทเรียน

ตรวจสอบข้อมูลนำเข้าเพื่อหยุดการฉีด

ปฏิเสธข้อมูลที่เป็นอันตรายตั้งแต่ขอบระบบ

ตรวจสอบข้อมูลนำเข้าเพื่อหยุดการฉีด เป็นบทเรียน 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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. จำกัดอัตราคำขอด้วย Flask-Limiter
  2. กำหนดค่า CORS สำหรับไคลเอนต์เบราว์เซอร์
  3. ส่วนหัวความปลอดภัยและ HTTPS
  4. ตรวจสอบข้อมูลนำเข้าเพื่อหยุดการฉีด
← กลับไปที่ Flask Academy