Ich spielte nur mit einer Idee herum und konnte mir keine Lösung vorstellen, wie dies im Backend gelöst werden kann, ohne die Sicherheitsproblematik zu beeinträchtigen.Algorithmen von 'nicht vertrauenswürdigen' Benutzern auswerten
Sagen, ich möchte Benutzern die Möglichkeit geben, einfache Algorithmen über einen Webdienst zu erstellen und diese über kleine Listen, z. range(0, 5)
dann melden Sie die Ergebnisse über einen anderen Webservice, eine Vorlage oder eine E-Mail zurück, ist nicht wirklich wichtig, es ist die Bewertung, die mich stört.
mit Python:
class Algorithm(whatever):
function = whatever.CharField(max_length=75)
Ein Benutzer etwas eingeben könnte:
'f(x)=x+(x/5)**0.75'
Natürlich habe ich eval
, Strippen alle Einbauten, Streichern andere als "x" usw. verwenden könnte, aber das wäre immer noch eine unglückliche Praxis.
Das einzige, was ich mir vorstellen konnte, ist Verschieben Sie jede Evaluierungsfunktionalität zu einem JavaScript-Frontend.
Nun, Google macht so etwas in ihren Codejams. Ich frage mich, wie sie dieses Problem lösen. Führen Sie möglicherweise einen nicht vertrauenswürdigen Code einer VM mit dem erforderlichen Setup aus. Selbst wenn sie die VM borken, sind Sie immer noch sicher – inspectorG4dget
, wenn Sie eventuelles "Import" -Schlüsselwort entfernen, sollte in Bezug auf Datenschaden nichts passieren. –
@MaxLi Was ist mit "__import__"? – Natan