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?
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.
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. Ссылка ?
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üfenTags und Links python web-applications interpreter