ควรเรียกใช้สคริปต์ส่วนขยายในแซนด์บ็อกซ์หรือไม่


11

โดยเฉพาะอย่างยิ่งนี่เป็นเรื่องเกี่ยวกับส่วนขยายเกมที่เขียนด้วย lua (luajit-2.0) ฉันใคร่ครวญว่าฉันควร จำกัด สิ่งที่สคริปต์เหล่านี้สามารถทำได้หรือไม่และสรุปได้ว่าฉันไม่ควร:

  • มันยากที่จะทำให้ถูกต้อง ฟังดูงี่เง่า แต่โอกาสของฉันก็คือแซนด์บ็อกซ์ของฉันจะจบลงด้วยการรั่วไหล

  • ประโยชน์อย่างเดียวที่ฉันคิดได้คือให้ความรู้สึกปลอดภัยแก่ผู้ใช้เมื่อใช้งานสคริปต์บุคคลที่สาม

  • ข้อเสียคือมันน่ารำคาญอย่างยิ่งสำหรับนักเขียนส่วนขยาย นั่นคือตอนนี้ตัวฉันเอง (เนื้อหาของเกมส่วนใหญ่จะถูกเขียนสคริปต์)

เหตุผลที่ฉันถามตอนนี้ก่อนที่ฉันจะมีอะไรที่ทำได้จริง ๆ ก็คือการเพิ่ม sandbox ไว้ก่อนนั้นเป็นเรื่องง่าย อย่างไรก็ตามถ้าฉันไปกับมันก่อนแล้วตัดสินใจในภายหลังว่าฉันต้องมี Sandbox หลังจากทั้งหมดฉันจะพบปัญหา (ฉันต้องเขียนสคริปต์ที่มีอยู่แล้วหรือแนะนำระบบการจัดการความน่าเชื่อถือบางรูปแบบ ซึ่งดูเหมือนว่าจะมีปัญหามากกว่าค่า)


สำหรับเกมประเภทใด สำหรับผลิตภัณฑ์ที่จำหน่ายนอกประเทศขายให้กับลูกค้า 100,000 รายและทุกคนที่ชอบสามารถเขียนสคริปต์ได้หรือไม่ หรือสำหรับผลิตภัณฑ์ที่ขาย 50 ครั้งและคุณเป็นผู้เดียวที่ให้สคริปต์เพิ่มเติมหรือไม่
Doc Brown

คำตอบ:


2

ฉันเชื่อว่าทั้งการพัฒนาวิดีโอเกมซึ่งในการพัฒนาซอฟต์แวร์ใด ๆ ที่มีขนาดกลาง - ใหญ่โปรแกรมเมอร์มักจะพยายามสร้างเลเยอร์แลกเปลี่ยนหรือเลเยอร์ตัวเลือกฟรีสำหรับการใช้งานในอนาคต

Luaเป็นภาษาที่ช่วยให้ตัวเลือกเหล่านี้ใช้งานได้ง่ายสำหรับผู้ใช้และสำหรับนักพัฒนา แต่นั่นไม่ได้หมายความว่ามันง่ายในการวางแผนพื้นที่ทำงานของคุณด้วยประสบการณ์ที่ฉันสามารถบอกคุณได้ในวันนี้ หากผู้ใช้ปลายทางได้รับอนุญาตให้ปรับแต่งพฤติกรรมของพวกเขา

หากเรามุ่งเน้นไปที่เกม Sandbox ที่มีให้เราสามารถยกมรดกให้เข้าใจได้ว่าการใช้ปลายทางสามารถเป็นดาบสองคมทำให้เกมกลายเป็นเกมที่ไม่ใช่เชิงเส้นน่าสนใจและสนุกแต่ในเวลาเดียวกันไม่ใช่เรื่องง่าย ข้อ จำกัด ในพื้นที่ทำงาน

จากมุมมองด้านความปลอดภัยมันฟังดูยอดเยี่ยม! สภาพแวดล้อมการทดสอบที่ดีสำหรับส่วนขยายควรใช้ในซอฟต์แวร์ทุกประเภท

โดยสรุปแล้วฉันสามารถพูดได้ว่าแม้ว่าจะไม่คุ้มค่าที่จะสร้าง Sandbox ให้กับผลิตภัณฑ์ของคุณ แต่ที่จริงแล้วผู้พัฒนาหรือกลุ่มผู้พัฒนาจะได้รับประโยชน์มากขึ้นเนื่องจากผู้ใช้สามารถกำหนดค่าสภาพแวดล้อมของคุณได้อย่างง่ายดาย ทำการเปลี่ยนแปลงโครงสร้างการทำงาน ฉันเชื่อมั่นอย่างแน่วแน่ว่าเกมแซนด์บ็อกซ์ (เช่นเดียวกับความสามารถในการปรับขนาดของซอฟต์แวร์) อนุญาตให้มีการพัฒนาอย่างสร้างสรรค์ของส่วนขยายของพวกเขาและวิวัฒนาการตามธรรมชาติของฟังก์ชันการทำงาน


1
ฉันคิดว่าคุณกำลังใช้ 'แซนด์บ็อกซ์' ในแง่ของการเล่นเกม แต่ OP ใช้มันในด้านความปลอดภัย พวกเขาดูเหมือนจะเป็นสองแนวคิดที่ไม่เกี่ยวข้องอย่างเป็นธรรม
bdsl

2

มันยากที่จะทำให้ถูกต้อง

จริงๆแล้วมันไม่ได้ยากมากนักในการสร้างsandbox พื้นฐานพร้อมฟังก์ชั่นไวท์ลิสต์ของฟังก์ชั่นแล้วเพิ่มการใช้งานที่กำหนดเองของฟังก์ชั่นที่อาจไม่ปลอดภัย คำถาม SOนี้ดูเหมือนจะเป็นจุดเริ่มต้นที่ดี

แต่โอกาสของฉันก็คือแซนด์บ็อกซ์ของฉันจะจบลงด้วยการรั่วไหล

ฉันคิดว่ามันจะเพียงพอที่จะเริ่มให้การรักษาความปลอดภัยขั้นพื้นฐาน: จำกัด การเข้าถึงไฟล์นอกไดเรกทอรีพิเศษบางอย่าง ไม่มีแอปพลิเคชันที่ปลอดภัย 100% คิดว่าจะเกิดอะไรขึ้นถ้ามีคนเขียนส่วนขยายที่เป็นอันตราย: ผู้ใช้อาจตำหนิคุณในฐานะนักพัฒนาซอฟต์แวร์ หากคุณวางแผนที่จะให้โอกาสกับใครบางคนในการเขียนส่วนขยายในที่สุดคุณจะต้องมีความปลอดภัย ถ้ามันเป็นเพียงคุณ - มันก็โอเคเหมือนเดิม

ประโยชน์อย่างเดียวที่ฉันคิดได้คือให้ความรู้สึกปลอดภัยแก่ผู้ใช้เมื่อใช้งานสคริปต์บุคคลที่สาม

นี่คือเหตุผลที่ว่าทำไมคุณควรทำแซนด์บ็อกซ์และไม่ใช่เหตุผลที่ถูกต้องในการแซนด์บ็อกซิ่ง

ข้อเสียคือมันน่ารำคาญอย่างยิ่งสำหรับนักเขียนส่วนขยาย

ฉันมีประสบการณ์ในการเขียนสคริปต์เกมและฉันไม่คิดว่ามันน่ารำคาญที่จะทำงานในสภาพแวดล้อมแบบแซนด์บ็อกซ์ด้วยตัวเอง สิ่งที่ทำให้ฉันรำคาญคือการขาดฟังก์ชั่นซึ่งเกี่ยวข้องกับเกมเช่น API เฉพาะของวัตถุในเกมหรือการใช้งานที่ไม่ดี

มันอาจจะช่วยถ้าคุณมองเข้าไปในความรักของเครื่องยนต์เป็นตัวอย่างที่ดี (ถ้าคุณยังไม่ได้) โดยเฉพาะอย่างยิ่งการสอนเกี่ยวกับ filesytem API

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.