Am 08.12.2012 17:40, schrieb Peter Otten:

Hallo Peter,

auch diese ist erst mal Falsch abgesandt worden Sorry Peter.

Also das würde ich jetzt dazu zählen schließlich könnte man das gebrauchen um
bösen Code auszuführen.

Albert Hermeling wrote:

Guten Morgen,

ich Beschäftige mich gerade mit mit den Internas von Python Funktionen.
Beim Nachdenken über Funktionen, habe ich mich gefragt, ob man Code beim
erzeugen einer Funktion unbemerkt ausführen kann. Klinkt jetzt ein
bisschen verworren, deshalb hier ein Beispiel:

s = """
def printer():
      print("Böse Funktion: ", dir())
"""

Diese Funktion liegt als String vor und wenn ich jetzt aus dem String
mit exec eine Funktion erzeuge (Instantiiere (?)) habe ich eine Funktion
printer im aktuellen Namensraum. So lange ich diese Funktion nicht
aufrufe, passiert nichts, rufe ich Sie auf passiert was. Ist es jetzt
eigentlich möglich, das bei der Erzeugung (exec(s) genau jetzt), also
noch vor dem Aufrufen der selbigen, Schadcode ausgeführt werden kann?

Ich hoffe das klingt jetzt nicht zu bizarr.
Zählt die Erzeugung von Defaultwerten?

def printer(default=print("gotcha")):
...     pass
...
gotcha


_______________________________________________
python-de maillist  -  python-de@python.org
http://mail.python.org/mailman/listinfo/python-de