Haruskah skrip ekstensi dijalankan di kotak pasir?

11

Khususnya, ini tentang ekstensi game yang ditulis dalam lua (luajit-2.0). Saya merenungkan apakah saya harus membatasi apa yang bisa dilakukan skrip ini, dan sampai pada kesimpulan bahwa saya mungkin tidak boleh:

  • Sulit untuk menjadi benar. Kedengarannya konyol, tapi kemungkinan kotak pasirku akan bocor.

  • Satu-satunya manfaat yang dapat saya pikirkan adalah memberi pengguna rasa aman saat menjalankan skrip pihak ketiga.

  • Kerugiannya adalah itu hanya sangat menjengkelkan bagi penulis ekstensi. Yaitu, untuk saat ini, saya sendiri (konten game sebagian besar akan ditulis).

Alasan saya menanyakan ini sekarang sebelum saya benar-benar memiliki sesuatu yang rapi adalah bahwa menambahkan kotak pasir sejak awal itu mudah, tetapi akan memaksakan pembatasan yang mengganggu pada diri saya juga. Namun jika saya pertama kali melanjutkannya dan kemudian memutuskan bahwa saya memang membutuhkan kotak pasir, saya akan mengalami masalah (saya harus menulis ulang skrip yang sudah ada di sana, atau memperkenalkan beberapa bentuk sistem manajemen kepercayaan yang tampaknya lebih banyak masalah daripada nilainya).

Kubik
sumber
Untuk jenis permainan apa? Untuk produk yang tidak tersedia, dijual kepada 100.000 pelanggan, dan semua orang yang suka dapat menulis skrip untuk itu? Atau untuk produk yang terjual 50 kali dan Anda adalah satu-satunya yang menyediakan skrip tambahan?
Doc Brown

Jawaban:

2

Saya percaya bahwa baik pengembangan videogame, yang dalam setiap pengembangan perangkat lunak dari dimensi menengah-besar, programmer akan selalu mencoba untuk membuat pertukaran lapisan atau opsi set bebas untuk fungsionalitas masa depan.

Lua adalah bahasa yang memungkinkan opsi ini mudah diimplementasikan untuk pengguna akhir, dan untuk pengembang, tetapi itu tidak berarti mudah untuk merencanakan ruang kerja Anda, dengan pengalaman yang dapat saya sampaikan kepada Anda hari ini, juga perkalian sederhana dapat bocor, jika pengguna akhir diizinkan untuk menyesuaikan perilaku mereka.

Jika kita fokus pada apa yang ditawarkan gim pasir, kita bisa mewaspadai bahwa penggunaan akhir bisa berupa pisau ganda, memungkinkan gim menjadi non-linear, menarik dan menyenangkan , tetapi pada saat yang sama tidak mudah untuk merencanakannya. batas mereka di area kerja.

Dari sudut pandang keamanan, kedengarannya fantastis! lingkungan pengujian yang baik untuk ekstensi, harus diterapkan di semua jenis perangkat lunak.

Sebagai kesimpulan, saya dapat mengatakan bahwa meskipun tampaknya tidak layak membuat kotak pasir untuk produk Anda, sebenarnya pengembang atau grup pengembang akan mendapatkan lebih banyak manfaat, karena sebagai pengguna akhir dapat dengan mudah mengkonfigurasi lingkungan Anda di pengembang mungkin juga lebih sedikit waktu untuk membuat perubahan pada struktur fungsional. Saya sangat yakin bahwa permainan kotak pasir, (seperti dalam skalabilitas perangkat lunak), memungkinkan evolusi kreatif ekstensi mereka dan evolusi alami dari fungsinya.

RTOSkit
sumber
1
Saya pikir Anda menggunakan 'kotak pasir' dalam arti gaming, tetapi OP menggunakannya dalam arti keamanan. Mereka tampaknya dua konsep yang tidak berhubungan.
bdsl
2

Sulit untuk menjadi benar

Sebenarnya tidak terlalu sulit untuk membuat kotak pasir dasar dengan daftar putih fungsi dan kemudian menambahkan implementasi kustom dari fungsi yang berpotensi tidak aman. Pertanyaan SO ini sepertinya merupakan titik awal yang baik.

tetapi kemungkinan kotak pasir saya akan berakhir bocor

Saya pikir itu sudah cukup untuk mulai memberikan beberapa keamanan dasar: membatasi akses ke file di luar beberapa direktori khusus. Tidak ada yang namanya aplikasi 100% aman. Pikirkan apa yang bisa terjadi jika seseorang menulis beberapa ekstensi berbahaya: pengguna mungkin akan menyalahkan Anda sebagai pengembang. Jika Anda berencana memberi seseorang kesempatan untuk menulis ekstensi, pada akhirnya Anda akan membutuhkan keamanan. Jika hanya Anda - tidak apa-apa.

Satu-satunya manfaat yang dapat saya pikirkan adalah memberi pengguna rasa aman saat menjalankan skrip pihak ketiga.

Inilah alasan mengapa Anda harus melakukan sandboxing dan itu bukan argumen yang valid terhadap sandboxing.

Kerugiannya adalah itu hanya sangat menjengkelkan bagi penulis ekstensi

Saya memiliki beberapa pengalaman dalam pembuatan skrip permainan dan saya tidak merasa terganggu bekerja di lingkungan berpasir dengan sendirinya. Yang mengganggu saya adalah kurangnya fungsionalitas yang terkait dengan game, seperti API khusus objek dalam game atau implementasi yang buruk dari itu.

Mungkin membantu jika Anda melihat mesin LOVE sebagai contoh yang baik (jika Anda belum melakukannya), terutama tutorial tentang filesytem API .

skrip
sumber