eval() Sicherheit open() write import
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.
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.
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.
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.