The Sandbox

SubQuery TeamLess than 1 minute

The Sandbox

ในสถานการณ์การใช้งานที่เราได้คิดไว้คือ โหนดของ SubQuery จะถูกรันโดยโฮสต์ที่เชื่อถือได้ ในขณะที่โค้ดของโปรเจกต์ SubQuery ที่ผู้ใช้ส่งไปยังโหนดนั้น ไม่น่าเชื่อถือไปทั้งหมด

โค้ดที่เป็นอันตรายบางตัวมีแนวโน้มที่จะโจมตีโฮสต์หรืออาจทำอันตรายโฮสต์ แล้วทำให้ข้อมูลของโปรเจกต์อื่นๆ ในโฮสต์เดียวกันเสียหาย ดังนั้นเราจึงใช้กลไกการรักษาความปลอดภัยอย่าง sandbox VM2open in new window เพื่อลดความเสี่ยงนี้ โดย:

  • รันโค้ดที่ไม่น่าเชื่อถือในบริบทที่แยกออกมาเพื่อความปลอดภัย และโค้ดที่เป็นอันตรายนั้นจะเข้าถึงเครือข่ายและระบบไฟล์ของโฮสต์ไม่ได้ เว้นแต่เราจะใส่อินเทอร์เฟซที่เปิดเผยลงใน sandbox

  • เรียกใช้ method และแลกเปลี่ยนข้อมูลและการเรียกกลับระหว่าง sandboxes ต่าง ๆ อย่างปลอดภัย

  • มีความปลอดภัยต่อวิธีการโจมตีที่เป็น known methods มากมาย

ข้อจำกัด

  • มีเพียง assert, buffer, crypto,util และ path เท่านั้นที่อยู่ในรายการที่อนุญาตพิเศษ เพื่อจำกัดการเข้าถึงโมดูลแบบบิวท์อินบางโมดูล

  • เราสนับสนุน โมดูลจากแหล่งอื่น ที่เขียนในไลบรารี CommonJS และ ไฮบริด เช่น @polkadot/* ที่ใช้ ESM เป็นค่าเริ่มต้น

  • โมดูลใดๆ ที่ใช้ HTTP และ WebSocket จะถูกห้ามใช้