Wie führe ich nicht vertrauenswürdigen Ruby-Code in einer sicheren Sandbox aus?

Ich möchte in der Lage sein, nicht vertrauenswürdigen Ruby-Code auszuführen. Ich möchte in der Lage sein, Variablen an den nicht vertrauenswürdigen Code zu übergeben, den er möglicherweise verwendet. Ich möchte auch, dass der Code ein Ergebnis an mich zurückgibt. Hier ist ein konzeptionelles Beispiel für das, was ich denke

input = "sweet"
output = nil
Thread.start {
   $SAFE = 4
   #... untrusted code goes here, it uses the input variable(s)
   #to calculate some result that it places in the output variable
}
#parse the output variable as a string.

Zur Verdeutlichung verwende ich im Grunde genommen den nicht vertrauenswürdigen Code als Funktion. Ich möchte seine einige Eingänge zur Verfügung stellen und ihm dann erlauben, zum Ausgang zu schreiben. Das ist alles, was ich wirklich will, es ist mir egal, wie es gemacht wird, ich möchte nur die Möglichkeit, nicht vertrauenswürdigen Ruby-Code als eine Art Funktion zu verwenden. Die Lösung muss nicht so aussehen wie der Code, den ich oben geschrieben habe. Ich verwende ihn nur, um zu veranschaulichen, was ich will.

Derzeit habe ich drei Möglichkeiten, dies zu tun:

Verwenden Sie das obige $ SAFE-Level-Konstrukt.whytheluckystiff hat ein Sandbox-Plugin für RubyIch könnte jede Funktion in einer eigenen virtuellen Maschine ausführen, indem ich eine Art Betriebssystem-Virtualisierungssoftware wie VMware oder Xen oder etwas anderes verwende.

Ich frage mich, ob jemand Empfehlungen zum funktionalen Ausführen von nicht vertrauenswürdigem Ruby-Code hat. Welche Option würden Sie empfehlen? Wie würden Sie vorgehen? Vielen Dank.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage