AW: [mailinglist] [Python-de] Sandkastenspiele

Dinu Gherman dinu at mac.com
Sam Jun 14 10:56:43 EDT 2003


Uwe Schmitt:

> Desweiteren kann man "open" und "file" kontrollieren, d.h.
> nur bestimmte Dateinamen, Pfade und Filemodi erlauben.

Wie ich sehe, sind da keinerlei Wrapper z.B. um open oder __import__
drin, sondern diese Funktionen werden ersetzt durch load_*-Methoden
der SandBox, richtig? Heisst das, man kann z.B. gar kein open() mehr
verwenden, oder gibt's dazu einfach nur keinen Testcode?

Ok, folgender Code bringt mir einen ImportError:

   import SandBox
   sb = SandBox.SandBox()
   sb.exec_code("import math")

was wiederum heisst, man kann keinen beliebigen Code ausfuehren,
sondern nur solchen, der keine unsicheren Anweisungen enthaelt.
D.h. Deine SandBox reduziert die erlaubten Anweisungen, was mir
nicht so ganz gefaellt. Ich haette lieber eine Reduktion im
Funktionsumfang der Anweisungen selbst, mit einem evtl. ausge-
loesten AcessError bei gewissen "Grenzueberschreitungen".

Ich bekomme das mit Wrappern fuer open etc. hin, aber die um-
wickelten Funktionen gibt es dann immer noch. Man koennte ver-
mutlich auch __import__, open und file ganz in Python schreiben,
was wohl kein Spass sein duerfte. Aber... obwohl, kann man??

Dinu

--
Dinu C. Gherman
......................................................................
"Les gens se divisent en deux catégories : les uns cherchent et
ne trouvent pas, les autres trouvent et ne sont pas contents."
(Mihail Eminescu)