Quali sono le mie scelte per lo scripting in sandboxing lato server? [chiuso]

11

Sto costruendo un sito Web pubblico in cui gli utenti condividono dati e script per eseguire alcuni dati. Gli script vengono eseguiti lato server in una sorta di sandbox senza altre interazioni in questo ciclo: il mio programma Perl legge da un database uno script creato dall'utente, aggiunge i dati da elaborare nello script (cioè: un documento JSON) quindi chiama l'interprete, restituisce la risposta (un documento JSON o testo normale), lo salvi il database con il mio script perl. Lo script dovrebbe essere in grado di avere un accesso alle funzioni incorporate aggiunte al linguaggio di scripting da solo, ma niente di più.

Quindi mi sono imbattuto su node.js come interprete javascript e circa un'ora fa con Google V8 (la v8 ha senso per questo genere di cose?). Mi è venuto in mente anche CoffeeScript, poiché è bello ed è ancora Javascript.

Penso che javascript sia abbastanza diffuso e più "sandboxabile" dal momento che non ha chiamate al sistema operativo o nulla di remoto (penso).

a proposito, sto scrivendo il sistema su Perl e Php per il front-end.

Per migliorare la domanda: Sto scegliendo Javascript perché penso sia abbastanza sicuro e semplice da implementare con node.js, ma quali altre alternative sono per raggiungere questo tipo di attività? Lua? Pitone? Non riesco a trovare informazioni su come eseguire correttamente un interprete sandbox.

    
posta alfa64 04.03.2012 - 05:31
fonte

2 risposte

3

Java contiene un interprete JavaScript integrato. Non è predefinito sandbox, ma può essere abilitato da:

  • impostazione dell'otturatore di classe corretto - JavaScript può normalmente caricare le classi Java. L'otturatore di classe è una sorta di gestore della sicurezza che decide quali classi possono essere caricate e quali no.
  • Script "startup" - breve inizializzazione JavaScript che elimina i punti di accesso al sistema esterno: java = undefined;Packages = undefined;org = undefined;

Se lo fai, gli script in esecuzione all'interno non dovrebbero essere in grado di accedere ad ambienti esterni in alcun modo.

Fornisce inoltre funzionalità di time-out dello script e limitazione del conteggio delle istruzioni, utile per il sandboxing: è possibile limitare la durata o la complessità dello script.

L'ho usato in Java 7 che ha il motore JavaScript di Rhino. Java 8 ha il nuovo e più moderno motore Nashorn: non l'ho provato con Nashorn, ma mi aspetto che dovrebbe essere simile.

    
risposta data 26.05.2015 - 11:19
fonte
2

il mio primo pensiero era node.js - come hai detto sopra è un interprete javascript. Ed è esattamente ciò di cui hai bisogno, se vuoi sandboxare gli script in un modo davvero sicuro.

Un altro modo potrebbe essere, che controlli ogni comando in uno script, se è valido o meno. Ma non penso che otterrai una sandbox sicura.

Un saluto

    
risposta data 04.03.2012 - 20:12
fonte

Leggi altre domande sui tag