Einbetten eines Python-Interpreters auf einer Website

9

Ich versuche eine Bildungs-Coding-Site zu erstellen, ähnlich wie bei der Codecademy , aber ich bin ehrlich gesagt ratlos, was die Schritte sein sollten genommen. Könnte ich in die richtige Richtung zeigen, wenn ich auch nur einen einfachen Python-Interpreter in eine Webanwendung einbeziehe?

    
twoxmachine 29.06.2012, 15:46
quelle

4 Antworten

8

Eine Option könnte darin bestehen, PyPy zu verwenden, um ein Sandbox-Python zu erstellen. Es würde die externen Operationen begrenzen, die jemand tun könnte.

Sobald Sie das eingerichtet haben, würde Ihre Website die Codequelle übernehmen, sie über Ajax an Ihren Webserver senden, und der Server würde den Code in einem Subprozess einer Sandbox-Python-Instanz ausführen. Sie könnten den Prozess auch beenden, wenn es länger als 5 Sekunden dauert. Dann geben Sie die Ausgabe als Antwort an den Client zurück.

Siehe diese Links für Hilfe zu einer PyPy-Sandbox:
Ссылка
Ссылка

Die Erstellung einer vollständig interaktiven REPL wäre noch mehr involviert. Sie müssten einen Interpreter für jeden Client auf Ihrem Server am Leben erhalten. Akzeptiere dann Ajax- "Zeilen" der Eingabe und führe sie durch den Interp, indem du mit dem laufenden Prozess kommunizierst und die Ausgabe zurückbringst.

Insgesamt nicht trivial. Sie würden einige starke Entwicklerfähigkeiten benötigen, um dies bequem zu machen. Sie können diese Aufgabe ein wenig entmutigend finden, wenn Sie gerade lernen.

    
jdi 29.06.2012, 16:12
quelle
3

Hier gibt es mehr zu tun als Sie denken.

Das Hauptproblem ist, dass Sie nicht Personen erlauben können, beliebigen Python-Code auf Ihrem Webserver auszuführen. Zum Beispiel, was passiert, wenn sie es tun

%Vor%

Sie müssen also diesen Python-Code sicher ausführen. Aber dann hast du das Problem, Python zu sichern, was im Grunde unmöglich ist, weil es so dynamisch ist. Und deshalb müssen Sie wahrscheinlich die Python-Shell in einer virtuellen Maschine ausführen, was mit eigenen Problemen verbunden ist.

Haben Sie gesehen, z.B. Ссылка ?

    
katrielalex 29.06.2012 15:54
quelle
1

Eine aktuelle Option hierfür ist repl .

Diese Option ist großartig, weil die Compiler mit JavaScript erstellt werden, also die Kompilierung und die Ausführung auf der Benutzerseite erfolgt , was bedeutet, dass der Server keine Sicherheitslücken aufweist.

Sie haben Compiler für: Python3, Python, Javascript, Java, Ruby, PHP ...

Ich empfehle Ihnen dringend, ihre Website unter Ссылка

zu überprüfen     
user4597527 24.02.2015 11:24
quelle
1

Schauen Sie in LXC-Container. Sie haben eine ziemlich coole API, mit der Sie leichtgewichtige Linux-Container erstellen können. Sie könnten die Subprozessbefehle in diesem Container ausführen, damit der Endbenutzer sich nicht mit Ihrem Hauptserver anlegen kann.

    
Josh C 04.06.2015 16:22
quelle