2009-05-04 9 views
12

Capisco che lasciare qualsiasi utente anonimo caricare qualsiasi tipo di file in generale può essere pericoloso, specialmente se si tratta di codice. Tuttavia, ho un'idea di permettere agli utenti di caricare script AI personalizzati sul mio sito web. Fornirei il modello in modo che l'utente potesse competere con altri AI in un gioco web online che ho scritto in Python. O ho bisogno di una soluzione per garantire che un utente non possa compromettere nessun altro file o iniettare codice malevolo tramite il proprio script caricato o una soluzione per l'esecuzione del gioco lato client. Eventuali suggerimenti? (Sto cercando una soluzione che funzionerà con i miei script Python)Permettere agli utenti di caricare script Python per l'esecuzione

+1

Il vostro progetto suona bene. –

+0

Grazie mille per il feedback tutti – AlbertoPL

+0

Buon progetto !!!! –

risposta

0

Avere un'API estesa per gli utenti e rimuovere tutte le altre chiamate al caricamento (come le istruzioni di importazione). Inoltre, elimina tutto ciò che ha qualcosa a che fare con il file i/o.

(Si potrebbe desiderare di fare più passaggi per assicurarsi che non hai perdere nulla.)

+1

Nessun exec né "exec" imp "" ort os "' :) –

3

Sì.

Consentire loro di scrivere script sul proprio client, non sul proprio server.

8

Non sono in alcun modo associato a questo sito e lo sto solo collegando perché cerca di ottenere quello che stai cercando: il jailing di python. Il sito è code pad.

In base alla pagina di riferimento, viene eseguito in geordi e intercetta tutte le chiamate di sistema con ptrace. Oltre a essere chroot, sono su una macchina virtuale con firewall in atto per impedire le connessioni in uscita.

Consideralo un punto di partenza, ma devo intervenire sull'intera situazione di pericolo. Devo CIA me stesso. :)

8

Utilizzando PyPy è possibile creare una sandbox python. La sandbox è un ambiente python separato e apparentemente sicuro in cui è possibile eseguire i propri script. Maggiori informazioni qui

http://codespeak.net/pypy/dist/pypy/doc/sandbox.html

"In teoria è impossibile fare nulla di male o di leggere un file casuale sulla macchina da questo prompt."

"Questa operazione è sicura anche se script.py proviene da una fonte casuale non attendibile, ad esempio se viene eseguita da un server HTTP."

+0

Qualcuno ha effettivamente usato questo? Ogni volta che controllo su PYPY, è sempre in fase di sviluppo. – Unknown

+0

Non l'ho letto, ho appena letto. – Dave

4

Insieme ad altre misure di sicurezza, è possibile includere anche la revisione umana del codice. Supponendo che parte dell'esperienza stia rivedendo le soluzioni degli altri membri, e ognuno è uno sviluppatore python, non consentire l'attivazione di un nuovo codice finché un determinato numero di membri non voterà per esso. I tuoi utenti non approveranno il codice dannoso.

1

PyPy è probabilmente una scelta decente sul lato server come suggerito, ma mi piacerebbe che il backend python fornisse API e formati di dati ben definiti e gli utenti implementassero l'intelligenza artificiale e la logica in Javascript in modo che possa essere eseguito il loro browser. L'interazione sarebbe quindi la seguente: Per ogni corrispondenza/svolta/ecc., Passare i dati al browser in un formato ben definito, fornire un modello javascript che riceve i dati e implementare la logica e fornire API Web che possono essere richiamate dal client (browser) per eseguire le azioni desiderate. In questo modo non devi preoccuparti della sicurezza o della potenza del server.

Problemi correlati