Mir ist klar, dass das ein bisschen verrückt klingt, aber ich arbeite an einem Projekt, für das ich einen Server brauche, um vom Benutzer bereitgestellten Ruby-Code auszuführen und das Ergebnis zurückzugeben.
Ich möchte etwas wie das verhindern:
%Vor%Ich bin mir sicher, dass es einen einigermaßen sicheren Weg dafür geben muss, da es bereits an Orten wie tryruby.org existiert. Jede Hilfe wird sehr geschätzt, danke!
Drei Vorschläge:
1) Werfen Sie einen Blick auf die Fehlerstufen . Dies bietet ein gewisses Maß an Schutz gegen, eval('evil_code')
Art Dinge, etc.
2) Wenn der Benutzer keinen Zugriff auf das lokale Dateisystem benötigt, verwenden Sie etwas wie ficefs
3) Egal was Sie sonst noch tun folgen Sie Tronic's Vorschlag (kann ein Problem beim Setup sein, aber begrenzte chroot jails sind die einzige Möglichkeit, absolut sicher zu gehen, dass Benutzer nicht auf Ressourcen zugreifen können, die Sie nicht explizit wollen).
Ein "unbeschriebenes Blatt" ist ein Objekt, dessen Methoden entfernt wurden. Ein "Reinraum" ist ein Objekt, in dem Sie potenziell unsichere Räume bewerten. Wenn Sie den Code in einem "Reinraum" auswerten, der auch ein "unbeschriebenes Blatt" ist, und das sichere Niveau so hoch wie möglich ansteigen lässt, werden Sie sich einen großen Schutz leisten. Nichts in der Sicherheit ist sicher, also sollte dies als eine Schicht in Ihrer Sicherheit betrachtet werden, nicht unbedingt die only Schicht.
Tags und Links ruby