eval - nutzbar für sandbox?

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
lunar

@Defnull: Laut Dokumentation funktioniert das nicht, da marshal nur bestimmte Typen unterstützt:
Not all Python object types are supported; …[…]. The following types are supported: booleans, integers, long integers, floating point numbers, complex numbers, strings, Unicode objects, tuples, lists, sets, frozensets, dictionaries, and code objects […]
Schlimmstenfalls also erhält man ein Code-Objekt selbst, aber niemals ein Objekt beliebigen Typs, dessen Methoden beliebige Code-Objekte haben. Anders gesagt, das marshal-Format kann keine Objekte mit beliebigen Methoden ala "Unterklasse von list mit bösen __getitem__()" beschreiben. Es beschreibt nur Code-Objekte selbst, man müsste das Code-Objekt also nachträglich manuell an eine Methode oder Funktion hängen, und das wird kaum jemand bei Verstand machen.
ms4py
User
Beiträge: 1178
Registriert: Montag 19. Januar 2009, 09:37

Pickle ist ebenfalls ziemlich gefährlich, was das Ausführen von Code betrifft. Hier ist man nur mit einer modifizierten `pickle.loads` auf der sicheren Seite, s. http://docs.python.org/py3k/library/pic ... ng-globals.
„Lieber von den Richtigen kritisiert als von den Falschen gelobt werden.“
Gerhard Kocher

http://ms4py.org/
Benutzeravatar
Defnull
User
Beiträge: 778
Registriert: Donnerstag 18. Juni 2009, 22:09
Wohnort: Göttingen
Kontaktdaten:

lunar hat geschrieben:Anders gesagt, das marshal-Format kann keine Objekte mit beliebigen Methoden ala "Unterklasse von list mit bösen __getitem__()" beschreiben.
Stimmt. Das hatte ich anders im Gedächtnis. Unabhängig davon gilt marshal und Pickle aber nach wie vor als unsicher.
Bottle: Micro Web Framework + Development Blog
Antworten