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
risposta
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.)
Nessun exec né "exec" imp "" ort os "' :) –
Sì.
Consentire loro di scrivere script sul proprio client, non sul proprio server.
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. :)
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."
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.
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.
- 1. Permettere agli utenti di ssh su un'istanza di Ubuntu EC2?
- 2. Permettere agli utenti di scegliere un tema personalizzato in Rails
- 3. Permettere agli utenti di cancellare i propri commenti in Django
- 4. Permettere agli utenti di inserire solo tag specifici
- 5. Come distribuire Python agli utenti di Windows?
- 6. Permettere agli utenti di utilizzare domini personalizzati per Django app su Heroku
- 7. Rischi nel consentire agli utenti di caricare file HTML/JS
- 8. Permettere agli utenti di ritagliare e ridimensionare le immagini Ruby on Rails
- 9. Contribuire agli script di test R
- 10. Aggiunta di nodi agli oggetti in Inkscape tramite script Python
- 11. Estendere il pacchetto agli utenti di mean.io
- 12. primefaces caricare, come permettere un solo caricati in modalità anticipo
- 13. Consentono agli utenti anonimi di caricare file sul mio Google Drive utilizzando l'SDK di Google Drive
- 14. Come posso consentire agli utenti di caricare i file tramite copia/incolla?
- 15. Permettere il fallimento di un pacchetto Python nell'installazione
- 16. Consenti agli utenti di ordinare i post in Wordpress
- 17. Aggiunta di nuove voci host agli utenti esistenti di mysql
- 18. Consenti agli utenti di digitare percorso nel tkinter askopenfilename()
- 19. Instagram Sandbox Inviti agli utenti mai ricevuti
- 20. Symfony2: accesso automatico agli utenti dalla sessione di Windows
- 21. Progettazione del database per memorizzare le notifiche agli utenti
- 22. Il mio approccio per dare accesso agli utenti è corretto?
- 23. Permettere l'questo riferimento per sfuggire
- 24. Buona alternativa agli script batch di Windows?
- 25. Script Python per NetLogo?
- 26. Google fornisce agli utenti di test i test di integrazione
- 27. Consenti agli utenti anonimi di aggiungere oggetti di destrezza
- 28. il modo migliore per caricare script dinamici
- 29. aggiorna automaticamente lo script python
- 30. Permettere a Ctrl-C di interrompere un'estensione C Python
Il vostro progetto suona bene. –
Grazie mille per il feedback tutti – AlbertoPL
Buon progetto !!!! –