Gli script di estensione dovrebbero essere eseguiti in una sandbox?

11

In particolare, si tratta di estensioni di giochi scritte in lua (luajit-2.0). Stavo riflettendo se dovrei limitare ciò che questi script possono fare e sono giunto alla conclusione che probabilmente non dovrei:

  • È difficile avere ragione. Sembra sciocco, ma è probabile che la mia sandbox finirà comunque per perdere.

  • L'unico vantaggio che potrei pensare 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. Questo è, per ora, me stesso (il contenuto del gioco sarà per lo più sceneggiato).

Il motivo per cui ora lo sto chiedendo prima di avere qualcosa di presentabile è che aggiungere una sandbox in anticipo è facile, ma imporrebbe anche a me stesso delle fastidiose restrizioni. Tuttavia, se prima andassi avanti e poi decidessi che ho bisogno di una sandbox, mi imbatterò in problemi (dovrei riscrivere gli script che sono già lì o introdurre qualche forma di sistema di gestione della fiducia che sembra essere più difficile di quello che vale).

    
posta Cubic 18.11.2012 - 13:05
fonte

2 risposte

2

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

Lua è un linguaggio che consente a queste opzioni di essere facilmente implementate per l'utente finale e per lo sviluppatore, ma ciò non significa che sia facile pianificare il tuo spazio di lavoro, con esperienza che posso dire 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 lasciarci capire che l'uso finale può essere un doppio lama, che consente al gioco di diventare non lineare, interessante e divertente , ma allo stesso tempo non è facile pianificare 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 conclusion, I can say that although it seems that not worth making a sandbox for your product, actually the developer or group of developers will get more benefits, because as the end user can easily configure your environment at the developer may also less time to make changes to the functional structure. I am firmly convinced that a sandbox game, (as in the software scalability), allows a creative evolution of their extensions and a natural evolution of its functionalities.

    
risposta data 03.01.2013 - 20:08
fonte
2

It's hard to get right

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

but chances are my sandbox is gonna end up leaky anyways

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ò accadere se qualcuno scriverà qualche estensione maligna: gli utenti probabilmente ti accuseranno come sviluppatore. Se hai intenzione di dare a qualcuno la possibilità di scrivere estensioni, alla fine avrai bisogno di un po 'di sicurezza. Se sei solo tu - va bene così com'è.

The only benefit I could think of would be giving users some sense of security when running third party scripts.

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

The disadvantages would be that it's just incredibly annoying for extension writers

Ho una certa esperienza nello scripting di giochi e non trovo fastidioso lavorare da solo in un ambiente in modalità sandbox. Ciò che mi infastidisce è la mancanza di funzionalità che sono legate al gioco, come specifiche API di oggetti di gioco o cattive implementazioni di tali elementi.

Può essere d'aiuto se si guarda al motore LOVE come buon esempio (se non l'hai già fatto), specialmente tutorial su API filesytem .

    
risposta data 02.02.2013 - 22:52
fonte

Leggi altre domande sui tag