Sicherheitsimplikationen von Pythons eval() mit nicht vertrauenswürdigen Strings
Bei der Auswertung nicht vertrauenswürdiger Python-Strings mit eval() entstehen mehrere Sicherheitsrisiken:
1. eval(string, {"f": Foo()}, {})
Das ist unsicher. Über eine Foo-Instanz kann man auf integrierte Funktionen wie „os“ und „sys“ zugreifen, die möglicherweise das System gefährden.
2. eval(string, {}, {})
Dies ist ebenfalls unsicher. Auch ohne explizite Übergabe eines Wörterbuchs können integrierte Funktionen wie „len“ und „list“ verwendet werden, um andere unsichere APIs zu erreichen.
3. Integrierte Funktionen verbieten
Es gibt keine einfache Möglichkeit, das Vorhandensein von integrierten Funktionen im eval()-Kontext vollständig zu verhindern. Es wären Patches für den Python-Interpreter erforderlich.
Zusätzliche Risiken:
Bösartige Zeichenfolgen wie „[0] * 100000000“ können zur Erschöpfung der Ressourcen führen. Das Ausführen beliebiger Ausdrücke kann die Benutzerdaten und die Systemsicherheit gefährden.
Alternative Ansätze:
Anstatt eval() zu verwenden, sollten Sie andere Methoden für den Umgang mit nicht vertrauenswürdigen Daten in Betracht ziehen. Beispiel:
Das obige ist der detaillierte Inhalt vonWie sicher ist die Verwendung von Pythons „eval()' mit nicht vertrauenswürdigen Strings?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!