Sto tentando di costruire un sito di codifica educativo, simile a Codecademy, ma sono francamente in perdita su quali misure dovrebbero essere prese. Potrei essere indicato nella giusta direzione includendo anche un semplice interprete python in una webapp?Come incorporare un interprete Python su un sito web
risposta
Un'opzione potrebbe essere l'uso di PyPy per creare un python sandbox. Limiterà le operazioni esterne che qualcuno potrebbe fare.
Una volta configurato, il sito Web prenderà il codice sorgente, lo invierà tramite ajax al server Web e il server eseguirà il codice in un sottoprocesso di un'istanza python sandboxed. Potresti anche essere in grado di terminare il processo se impiega più tempo di almeno 5 secondi. Quindi si restituisce l'output come risposta al client.
Vedi questi link per aiuto su una sandbox PyPy:
http://doc.pypy.org/en/latest/sandbox.html
http://readevalprint.com/blog/python-sandbox-with-pypy.html
Per creare un REPL completamente interattivo sarebbe ancora più coinvolto. Avresti bisogno di mantenere vivo un interprete per ogni client sul tuo server. Quindi accetta ajax "linee" di input ed eseguili attraverso l'interp comunicando con il processo in esecuzione e restituisci l'output.
Nel complesso, non banale. Avresti bisogno di alcune forti capacità di sviluppo per farlo comodamente. Potresti trovare questa attività un po 'scoraggiante se stai semplicemente imparando.
Grazie per aver illustrato i passaggi che dovrò prendere. Ho pensato che un progetto come questo potrebbe essere difficile. Ti sono grato per avermi dedicato del tempo per mostrarmi le corde! – twoxmachine
C'è altro da fare qui di quanto si pensi.
Il problema principale è che non è possibile che consenta alle persone di eseguire codice Python arbitrario sul server web. Ad esempio, cosa succede se lo fanno
import os
os.system("rm -rf *.*")
Quindi chiaramente devi eseguire questo codice Python in modo sicuro. Ma poi hai il problema di proteggere Python, che è fondamentalmente impossibile a causa della sua dinamicità. E quindi probabilmente dovrai eseguire la shell Python in una macchina virtuale, che viene fornita con i suoi mal di testa.
Avete visto per esempio http://code.google.com/p/google-app-engine-samples/downloads/detail?name=shell_20091112.tar.gz&can=2&q=?
Passando attraverso alcune ricerche, ero a conoscenza di alcuni dei problemi di sicurezza coinvolti nel consentire il codice arbitrario. Grazie per avermi mostrato un esempio concreto, mi ha chiarito un bel po '! Passerò alla shell AJAX che hai collegato per cercare di capire come è stata implementata. Apprezzo che tu me l'abbia mostrato. – twoxmachine
Un'opzione recente per questo è utilizzare repl.
Questa opzione è impressionante perché i compilatori sono realizzati utilizzando JavaScript in modo che il compilation e esecuzione è fatto nel lato utente, il che significa che il server è privo di vulnerabilità.
Hanno compilatori per: python3, Python, Javascript, Java, Ruby, PHP ...
vi consiglio vivamente di controllare il loro sito a http://repl.it
sguardo nel LXC contenitori. Hanno una bella API che puoi usare per creare contenitori leggeri di linux. Potresti eseguire i comandi di sottoprocesso all'interno di quel contenitore in questo modo l'utente finale non potrebbe interferire con il tuo server principale.
- 1. Come incorporare l'audio in un sito Web?
- 2. Interprete python incorporare in un'applicazione python
- 3. Come incorporare un sito Web ridimensionato attraverso un iframe?
- 4. Come posso incorporare un sito Web nella mia app
- 5. Come incorporare un interprete comune di Lisp in un'applicazione GUI
- 6. come incorporare un video youku su un sito HTTPS?
- 7. Streaming audio live su un sito web
- 8. Misurazione su un sito web
- 9. Come reinizializzare un interprete Python integrato?
- 10. Come ospitare un sito Web JSP su un server web?
- 11. Interprete Python su Android
- 12. Interprete Python come classe C++
- 13. Sitemap su un sito web altamente dinamico
- 14. Posizionare assolutamente tutto su un sito web?
- 15. Come posso implementare OCR su un sito Web utilizzando PHP?
- 16. Interprete python aperto su intellij
- 17. Accesso a un sito Web tramite Python: come gestire CSRF?
- 18. è possibile incorporare un taccuino IPython interattivo nel mio sito Web/blog?
- 19. Come posso incorporare Outlook Web App nel mio sito?
- 20. incorporare un modulo google direttamente nel codice html di un sito web
- 21. Come posso accedere a un sito Web con Python?
- 22. Come accedere a un sito Web con python e mechanize
- 23. Come scrivere un interprete?
- 24. Come migrare un sito Python su un'altra macchina?
- 25. Come ottenere sitelink di Google su un sito Web?
- 26. Come trovare codice malico/malware su un sito web
- 27. Come eseguire lavori periodici su un sito Web ASP.NET MVC?
- 28. come fare login twitter su un sito web javascript
- 29. Come duplicare un sito Web basato su PHP?
- 30. Come posso utilizzare caratteri personalizzati su un sito Web?
Non sono il più esperto con gli strumenti di sviluppo web. Spero di imparare il più possibile da un progetto con un obiettivo ambizioso! – twoxmachine
Dai un'occhiata a questo: http://doc.pypy.org/en/latest/sandbox.html – ChristopheD
Grazie mille, @ChristopheD. Lo leggerò. – twoxmachine