Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

ห้ามไม่ให้โมดูล Python เรียกโมดูลอื่น (Sandboxing)

ใช้เทคนิค Sandboxed Python หรือ Restricted Execution เพื่อจำกัดสิทธิ์การทำงาน

สิ่งที่ควบคุมได้

  • อนุญาต/ห้าม Import โมดูลเฉพาะ
  • จำกัดเวลารัน (Execution Time Slices)
  • บล็อก/อนุญาต Network Access
  • จำกัดการเข้าถึง Filesystem (Chroot)

วิธีการ Implement

  1. แก้ CPython Runtime - ยาก สำหรับผู้เชี่ยวชาญ
  2. ใช้ Runtime อื่น เช่น PyPy Sandbox
  3. ใช้ OS-level Isolation Container (Docker), gVisor, Firecracker
  4. ใช้ Library เตรียมไว้ เช่น RestrictedPython

RestrictedPython

เป็น Subset ของ Python ที่กำหนดสภาพแวดล้อมที่เชימנได้ (Trusted Environment) สำหรับรันโค้ดที่ไม่น่าเชื่อถือ ไม่ใช่ Sandbox จริง แต่ช่วยกำหนดกฎการเข้าถึง

คำเตือน: Sandboxing ใน Python ทำได้ยากมาก เพราะภาษาเองไม่ได้ออกแบบมาเพื่อ Security Boundary ควรใช้ OS-level Isolation แทน