eval() Sicherheit open() write import

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
pynoo
User
Beiträge: 8
Registriert: Freitag 27. Mai 2011, 17:21

Ich stoße immer wieder darauf das 'eval()' unsicher sei. Mir ist durchaus klar, dass man damit jeden String als Kommando auführen kann. Aber geht das nicht auch indem man eine Datei mit 'open()' erstellt in diese die Textstrings mit '.write' die schreibt und diese Datei mittels import einfach ind das Programm ruft und ausführt? Ist es nicht damit sogar gefärlicher? Warum wird nie darauf hingewiesen? Zugegeben es ist schon fast eine selbt geschaffene Sicherheitslücke, aber mann kommt schnell auf solche Ideen wenn man zum beispiel ein KI schreiben möchte.
__deets__
User
Beiträge: 14529
Registriert: Mittwoch 14. Oktober 2015, 14:29

Darauf wird hingewiesen, wenn es vorgeführt wird. Passiert halt nicht. Eval und exec liegen näher, und streng genommen ist dein Szenario mal jenseits der Gefährlichkeit ein bisschen kompliziert, wenn es mit exec auch ohne extra Datei geht.


Was das nun it KI zu tun hat erschließt sich mir nicht. Ich spiele gerade mit SVMs rum, und weder da noch bei tensorflow, caffeine & co generiert man Python.
pynoo
User
Beiträge: 8
Registriert: Freitag 27. Mai 2011, 17:21

Ok, das mit der KI war nur so ein Gedankenspiel vo mir.

Übrigens: Danke für die schnelle Antwort!
Benutzeravatar
snafu
User
Beiträge: 6738
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Fremden Code ungeprüft auszuführen ist immer gefährlich. Zu eval() neigen z.B. oft Anfänger, wenn sie einen Taschenrechner oder sowas schreiben. Auch wenn es unwahrscheinlich ist, dass ein Anfänger-Taschenrechner mal auf einem Server läuft und ein fieser Dritter schädlichen Code mit ihm ausführen lässt, aber man sollte sich das gar nicht erst angewöhnen. Irgendwann würde man damit mal richtig auf die Nase fallen.
Antworten