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.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 […]
eval - nutzbar für sandbox?
@Defnull: Laut Dokumentation funktioniert das nicht, da marshal nur bestimmte Typen unterstützt:
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/
Gerhard Kocher
http://ms4py.org/
- Defnull
- User
- Beiträge: 778
- Registriert: Donnerstag 18. Juni 2009, 22:09
- Wohnort: Göttingen
- Kontaktdaten:
Stimmt. Das hatte ich anders im Gedächtnis. Unabhängig davon gilt marshal und Pickle aber nach wie vor als unsicher.lunar hat geschrieben:Anders gesagt, das marshal-Format kann keine Objekte mit beliebigen Methoden ala "Unterklasse von list mit bösen __getitem__()" beschreiben.
Bottle: Micro Web Framework + Development Blog