Gli script di estensione devono essere eseguiti in una sandbox?


11

In particolare, si tratta di estensioni di gioco scritte in lua (luajit-2.0). Stavo pensando se avrei dovuto limitare ciò che questi script possono fare e sono arrivato alla conclusione che probabilmente non avrei dovuto:

  • È difficile da ottenere. Sembra sciocco, ma è probabile che la mia sandbox finisca comunque per perdere.

  • L'unico vantaggio che mi viene in mente sarebbe dare agli utenti un senso di sicurezza durante l'esecuzione di script di terze parti.

  • Gli svantaggi sarebbero che è incredibilmente fastidioso per gli autori di estensioni. Cioè, per ora, me stesso (i contenuti del gioco saranno per lo più scritti).

Il motivo per cui lo sto chiedendo ora prima di avere qualcosa di presentabile è che aggiungere una sandbox in anticipo è facile, ma imporrei anche queste fastidiose restrizioni a me stesso. Tuttavia, se prima lo seguo e poi decido che dopo tutto ho bisogno di un sandbox, mi imbatterò in problemi (o dovrei riscrivere gli script che sono già lì, o introdurre qualche forma di sistema di gestione della fiducia che sembra essere più un problema di quanto valga la pena).


Per quale tipo di gioco? Per un prodotto pronto all'uso, venduto a 100.000 clienti e tutti coloro che amano possono scrivere script per questo? O per un prodotto venduto 50 volte e sei l'unico che fornisce script aggiuntivi?
Doc Brown,

Risposte:


2

Credo che sia lo sviluppo di un videogioco, che in qualsiasi sviluppo software di dimensioni medio-grandi, il programmatore cercherà sempre di creare uno scambio di livelli o opzioni di impostazione libera per funzionalità future.

Lua è un linguaggio che consente a queste opzioni di essere facili da implementare per l'utente finale e per lo sviluppatore, ma ciò non significa che sia facile pianificare l'area di lavoro, con l'esperienza che posso dirti oggi, anche una semplice moltiplicazione può perdere, se l'utente finale è autorizzato a personalizzare il proprio comportamento.

Se ci concentriamo su ciò che un gioco sandbox ha da offrire, possiamo lasciare in eredità capire che l'uso finale può essere una doppia lama, permettendo al gioco di diventare non lineare, interessante e divertente , ma allo stesso tempo non essere un piano facile i loro limiti nell'area di lavoro.

Dal punto di vista della sicurezza, sembra fantastico! un buon ambiente di test per le estensioni, dovrebbe essere implementato in tutti i tipi di software.

In conclusione, posso dire che, sebbene sembri che non valga la pena creare un sandbox per il tuo prodotto, in realtà lo sviluppatore o il gruppo di sviluppatori otterrà più vantaggi, poiché l'utente finale può facilmente configurare il proprio ambiente presso lo sviluppatore, ma potrebbe anche impiegare meno tempo per apportare modifiche alla struttura funzionale. Sono fermamente convinto che un gioco sandbox, (come nella scalabilità del software), permetta un'evoluzione creativa delle loro estensioni e una naturale evoluzione delle sue funzionalità.


1
Penso che tu stia usando "sandbox" nel senso del gioco, ma l'OP lo stava usando nel senso della sicurezza. Sembrano due concetti abbastanza indipendenti.
bdsl,

2

È difficile da ottenere

In realtà non è molto difficile creare un sandbox di base con la whitelist di funzioni e quindi aggiungere implementazioni personalizzate di funzioni potenzialmente non sicure. Questa domanda SO sembra un buon punto di partenza.

ma è probabile che la mia sandbox finisca per perdere comunque

Penso che sarebbe sufficiente iniziare a fornire un po 'di sicurezza di base: limitare l'accesso ai file al di fuori di alcune directory speciali. Non esistono comunque applicazioni sicure al 100%. Pensa a cosa può succedere se qualcuno scriverà qualche estensione dannosa: gli utenti probabilmente ti daranno la colpa come sviluppatore. Se hai intenzione di dare a qualcuno la possibilità di scrivere l'estensione, alla fine avrai bisogno di un po 'di sicurezza. Se sei solo tu, va bene così com'è.

L'unico vantaggio che mi viene in mente sarebbe dare agli utenti un senso di sicurezza durante l'esecuzione di script di terze parti.

Questo è esattamente il motivo per cui dovresti fare il sandboxing e non è un argomento valido contro il sandboxing.

Gli svantaggi sarebbero che è incredibilmente fastidioso per gli autori di estensioni

Ho una certa esperienza negli script di gioco e non trovo fastidioso lavorare in un ambiente sandbox da solo. Ciò che mi infastidisce è la mancanza di funzionalità che è legata al gioco, come API specifiche di oggetti di gioco o cattive implementazioni di tali.

Può essere utile se guardi al motore LOVE come un buon esempio (se non l'hai già fatto), in particolare il tutorial sull'API filesytem .

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.