The Sandbox
The Sandbox
ในสถานการณ์การใช้งานที่เราได้คิดไว้คือ โหนดของ SubQuery จะถูกรันโดยโฮสต์ที่เชื่อถือได้ ในขณะที่โค้ดของโปรเจกต์ SubQuery ที่ผู้ใช้ส่งไปยังโหนดนั้น ไม่น่าเชื่อถือไปทั้งหมด
โค้ดที่เป็นอันตรายบางตัวมีแนวโน้มที่จะโจมตีโฮสต์หรืออาจทำอันตรายโฮสต์ แล้วทำให้ข้อมูลของโปรเจกต์อื่นๆ ในโฮสต์เดียวกันเสียหาย ดังนั้นเราจึงใช้กลไกการรักษาความปลอดภัยอย่าง sandbox VM2 เพื่อลดความเสี่ยงนี้ โดย:
รันโค้ดที่ไม่น่าเชื่อถือในบริบทที่แยกออกมาเพื่อความปลอดภัย และโค้ดที่เป็นอันตรายนั้นจะเข้าถึงเครือข่ายและระบบไฟล์ของโฮสต์ไม่ได้ เว้นแต่เราจะใส่อินเทอร์เฟซที่เปิดเผยลงใน sandbox
เรียกใช้ method และแลกเปลี่ยนข้อมูลและการเรียกกลับระหว่าง sandboxes ต่าง ๆ อย่างปลอดภัย
มีความปลอดภัยต่อวิธีการโจมตีที่เป็น known methods มากมาย
ข้อจำกัด
มีเพียง
assert
,buffer
,crypto
,util
และpath
เท่านั้นที่อยู่ในรายการที่อนุญาตพิเศษ เพื่อจำกัดการเข้าถึงโมดูลแบบบิวท์อินบางโมดูลเราสนับสนุน โมดูลจากแหล่งอื่น ที่เขียนในไลบรารี CommonJS และ ไฮบริด เช่น
@polkadot/*
ที่ใช้ ESM เป็นค่าเริ่มต้นโมดูลใดๆ ที่ใช้
HTTP
และWebSocket
จะถูกห้ามใช้