in einer Stufe-4-Sandbox auszuführen:
def safe_eval(str)
Thread.start { # Sandbox-Thread starten
$SAFE = 4 # Sicherheitsstufe erhöhen
eval(str) # In der Sandbox ausführen
}.value # Ergebnis entgegennehmen
end
In der Sicherheitsstufe 4 können Sie nicht
require
verwenden, um eine andere Datei mit Ruby-Code zu laden. Sie können
load
verwenden, aber nur in verpackter Form mit
true
als zweitem Argument. Dies sorgt dafür, dass Ruby die geladene Datei in die Sandbox eines anonymen Moduls verpackt, so dass jegliche Klassen, Module oder Konstanten, die sie definiert, den globalen Namensraum nicht beeinflussen. Das bedeutet, dass Code, der unter Sicherheitsstufe 4 ausgeführt wird, Klassen und Module, die in externen Modulen definiert werden, laden, aber nicht nutzen kann.
Sie können eine Stufe-4-Sandbox noch weiter einschränken, indem Sie den Sandbox-Thread (vor dem Setzen von
$SAFE
) in einer
ThreadGroup
platzieren und
enclose
für diese Gruppe aufrufen. Siehe „9.9.5 Threads und Thread-Gruppen auflisten“ für Details.
Als Bestandteil der Sandbox, die sie erzeugt, verbietet die Sicherheitsstufe 4 zusätzliche Operationen, einschließlich der folgenden:
require
, unverpacktes
load
,
autoload
und
include
Modifikationen der Klasse
Object
Modifikationen von Nicht-Taint-Klassen oder -Modulen
Metaprogrammiermethoden
Manipulation von Threads außer dem aktuellen
Zugriff auf Thread-lokale Daten
Beenden des Prozesses
Dateieingabe und -ausgabe
Modifikationen von Umgebungsvariablen
Seeding des Zufallsgenerators mit
srand
Die Programmiersprache Ruby
David Flanagan
Yukihiro Matsumoto (»Matz«)
Sascha Kersken
Thomas Demmig
Impressum © 2008
Die Informationen in diesem Buch wurden mit größter Sorgfalt erarbeitet. Dennoch können Fehler nicht vollständig ausgeschlossen werden. Verlag, Autoren und Übersetzer übernehmen keine juristische Verantwortung oder irgendeine Haftung für eventuell verbliebene Fehler und deren Folgen.
Alle Warennamen werden ohne Gewährleistung der freien Verwendbarkeit benutzt und sind möglicherweise eingetragene Warenzeichen. Der Verlag richtet sich im Wesentlichen nach den Schreibweisen der Hersteller. Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.
Bibliografische Information Der Deutschen Bibliothek Die Deutsche Bibliothek verzeichnet diese Publikation in der Deutschen Nationalbibliografie; detaillierte bibliografische Daten sind im Internet über http://dnb.ddb.de abrufbar.
Satz: III-satz, Husby, www.drei-satz.de
O’Reilly Verlag
Balthasarstr. 81
Köln 50670
0221/9731600
0221/9731608
[email protected] 2013-06-11T10:25:37-07:00