Mir ist klar, dass das Hochladen von Dateien durch anonyme Benutzer im Allgemeinen gefährlich sein kann, insbesondere wenn es sich um Code handelt. Ich habe jedoch die Idee, dass Benutzer benutzerdefinierte AI-Skripte auf meine Website hochladen können. Ich würde die Vorlage zur Verfügung stellen, damit der Benutzer in einem Online-Webspiel, das ich in Python geschrieben habe, gegen andere KIs antreten kann. Ich brauche entweder eine Lösung, die sicherstellt, dass ein Benutzer keine anderen Dateien kompromittieren oder über sein hochgeladenes Skript bösartigen Code einschleusen kann, oder eine Lösung für die clientseitige Ausführung des Spiels. Irgendwelche Vorschläge? (Ich suche nach einer Lösung, die mit meinen Python-Skripten funktioniert)
Antworten
Zu viele Anzeigen?Ich stehe in keiner Weise mit dieser Seite in Verbindung und verlinke sie nur, weil sie versucht, das zu erreichen, was Sie anstreben: die Inhaftierung von Python. Die Seite ist Codetastatur .
Laut der About-Seite läuft es unter geordi und fängt alle sys-Aufrufe mit ptrace ab. Zusätzlich zum chroot'ed befinden sie sich auf einer virtuellen Maschine mit Firewalls, die ausgehende Verbindungen verhindern.
Betrachten Sie es als einen Ausgangspunkt, aber ich muss mich zu der ganzen Sache mit der Gefahr äußern. Ich muss mich selbst absichern :)
Mit PyPy können Sie eine Python-Sandbox erstellen. Die Sandbox ist eine separate und vermeintlich sichere Python-Umgebung, in der Sie ihre Skripte ausführen können. Mehr Infos hier
http://codespeak.net/pypy/dist/pypy/doc/sandbox.html
"Theoretisch ist es unmöglich, von dieser Eingabeaufforderung aus etwas Böses zu tun oder eine beliebige Datei auf dem Rechner zu lesen."
"Dies ist auch dann sicher, wenn script.py aus einer beliebigen, nicht vertrauenswürdigen Quelle stammt, z.B. wenn es von einem HTTP-Server stammt."
Neben anderen Sicherheitsvorkehrungen können Sie auch eine menschliche Überprüfung des Codes einbauen. Wenn Sie davon ausgehen, dass ein Teil der Erfahrung darin besteht, die Lösungen anderer Mitglieder zu überprüfen, und jeder ein Python-Entwickler ist, dann erlauben Sie nicht, dass neuer Code aktiviert wird, bevor eine bestimmte Anzahl von Mitgliedern dafür gestimmt hat. Ihre Benutzer werden bösartigen Code nicht genehmigen.
PyPy ist wahrscheinlich eine anständige Wette auf der Server-Seite, wie vorgeschlagen, aber ich würde in mit Ihrem Python-Backend gut definierte APIs und Datenformate und haben die Benutzer implementieren die AI und Logik in Javascript, so dass es in ihrem Browser ausgeführt werden kann. Die Interaktion würde also wie folgt aussehen: Für jedes Spiel/jede Runde/etc. übermitteln Sie Daten in einem genau definierten Format an den Browser, stellen eine Javascript-Vorlage bereit, die die Daten empfängt und Logik implementieren kann, und stellen Web-APIs bereit, die vom Client (Browser) aufgerufen werden können, um die gewünschten Aktionen auszuführen. Auf diese Weise müssen Sie sich keine Gedanken über Sicherheit oder Serverleistung machen.
- See previous answers
- Weitere Antworten anzeigen