Bücher online kostenlos Kostenlos Online Lesen
Die Programmiersprache Ruby (German Edition)

Die Programmiersprache Ruby (German Edition)

Titel: Die Programmiersprache Ruby (German Edition) Kostenlos Bücher Online Lesen
Autoren: David Flanagan , Yukihiro Matsumoto
Vom Netzwerk:
bisher unentdeckte Bugs könnten es ermöglichen, die Einschränkungen zu umgehen.
    10.5.2.1 Sicherheitsstufe 0
    Stufe 0 ist die Standardsicherheitsstufe. Es werden keine Überprüfungen von Taint-Daten durchgeführt.
    10.5.2.2 Sicherheitsstufe 1
    In dieser Stufe werden potenziell gefährliche Operationen mit Taint-Daten verboten. Sie können keinen String mit Code auswerten, wenn der String ein Taint-Wert ist; Sie können nicht mit
require
eine Bibliothek einbinden, wenn der Bibliotheksname ein Taint-Objekt ist; Sie können keine benannte Datei öffnen, wenn der Dateiname ein Taint-String ist; schließlich können Sie auch keine Verbindung zu einem Netzwerk-Host herstellen, wenn dessen Hostname ein Taint-Wert ist. Programme, insbesondere Netzwerkserver, die beliebige Eingaben akzeptieren, sollten am besten diese Sicherheitsstufe nutzen. Sie hilft, Programmierfehler abzufangen, die Taint-Daten auf unsichere Weise verwenden.
    Wenn Sie eine Bibliothek schreiben, die potenziell gefährliche Operationen durchführt – etwa Kommunikation mit einem Datenbankserver – sollten Sie den Wert von
$SAFE
überprüfen. Wenn er 1 oder höher ist, sollte Ihre Bibliothek nicht mit Taint-Objekten arbeiten. Beispielsweise sollten Sie keine SQL-Abfrage an eine Datenbank senden, wenn der String, der diese Abfrage enthält, ein Taint-Wert ist.
    Zu den Ausführungseinschränkungen auf Sicherheitsstufe 1 gehören folgende:
    Die Umgebungsvariablen
RUBYLIB
und
RUBYOPT
werden beim Start ignoriert.
Das aktuelle Verzeichnis (
.
) ist nicht in
$LOAD_PATH
enthalten.
Die Kommandozeilenoptionen
-e
,
-i
,
-I
,
-r
,
-s
,
-S
und
-X
werden verboten.
Bestimmte Instanz- und Klassenmethoden von
Dir
,
IO
,
File
und
FileTest
werden für Taint-Argumente verboten.
test
,
eval
,
require
,
load
und
trap
können nicht mit Taint-Argumenten aufgerufen werden.
    10.5.2.3 Sicherheitsstufe 2
    Sicherheitsstufe 2 schränkt Operationen mit Taint-Daten ein, genau wie Stufe 1, führt aber zusätzliche Einschränkungen für die Art und Weise ein, wie Dateien und Prozesse manipuliert werden können, und zwar unabhängig von Taint. Es gibt nur wenig Grund für ein Programm, seine eigene Sicherheitsstufe auf 2 zu setzen, aber ein Systemadministrator könnte bestimmen, dass ein Programm, das Sie geschrieben haben, auf dieser Sicherheitsstufe ausgeführt wird, um dafür zu sorgen, dass es keine Verzeichnisse erstellen oder löschen, keine Dateiberechtigungen ändern, keine Executables starten, keinen Ruby-Code aus Verzeichnissen mit allgemeinem Schreibrecht laden kann und so weiter.
    Zu den auf dieser Sicherheitsstufe eingeschränkten Methoden gehören die folgenden:
Dir.chdir File.truncate Process.egid=
Dir.chroot File.umask Process.fork
Dir.mkdir IO.fctrl Process.kill
Dir.rmdir IO.ioctl Process.setpgid
File.chmod Kernel.exit! Process.setpriority
File.chown Kernel.fork Process.setsid
File.flock Kernel.syscall
File.lstat Kernel.trap
    Zusätzlich hindert die Sicherheitsstufe 2 Sie daran, Ruby-Code zu laden oder zu importieren und Executables auszuführen, die in Verzeichnissen mit allgemeinen Schreibrechten liegen.
    10.5.2.4 Sicherheitsstufe 3
    Sicherheitsstufe 3 umfasst alle Einschränkungen von Stufe 2, und zusätzlich werden alle Objekte – einschließlich Literalen im Programmquellcode (außer vordefinierten Objekten in der globalen Umgebung) – bei ihrer Erzeugung zu Taint-Objekten. Außerdem ist die Methode
untaint
verboten.
    Sicherheitsstufe 3 ist ein Zwischenschritt in Richtung Stufe 4 und wird nicht häufig verwendet.
    10.5.2.5 Sicherheitsstufe 4
    Diese Stufe erweitert Stufe 3 so, dass sie jegliche Änderungen an Nicht-Taint-Objekten verhindert (einschließlich des Aufrufs von
taint
für Nicht-Taint-Objekte). Code, der auf dieser Stufe ausgeführt wird, kann weder die globale Umgebung modifizieren noch irgendwelche Nicht-Taint-Objekte verändern, die zuvor auf niedrigeren Sicherheitsstufen erzeugt wurden. Dies erzeugt im Grunde ein Sandbox, in der nicht vertrauenswürdiger Code ausgeführt werden kann, ohne Schaden anzurichten. (Zumindest in der Theorie – in Zukunft können Bugs in der Implementierung oder Defekte des zugrunde liegenden Sicherheitsmodells auftreten.)
    In den Stufen 1, 2 und 3 ist der Aufruf von
eval
für einen Taint-String verboten. In Sicherheitsstufe 4 ist er wieder erlaubt, weil die Beschränkungen der Stufe 4 stringent genug dafür sind, dass der ausgewertete String keinen Schaden anrichten kann. Hier sehen Sie eine Möglichkeit, beliebigen Code

Weitere Kostenlose Bücher