Heim > Backend-Entwicklung > Python-Tutorial > Wie sicher ist die Verwendung von Pythons „eval()' mit nicht vertrauenswürdigen Strings?

Wie sicher ist die Verwendung von Pythons „eval()' mit nicht vertrauenswürdigen Strings?

Susan Sarandon
Freigeben: 2024-11-27 01:36:10
Original
275 Leute haben es durchsucht

How Secure Is Using Python's `eval()` with Untrusted Strings?

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:

  • Bereinigen Sie die Eingabe, um potenziell schädlichen Code zu entfernen.
  • Verwenden Sie eine RestrictedExecutionEnvironment, um den Umfang der Codeausführung einzuschränken.
  • Übertragen Sie Daten mithilfe eines sicheren Serialisierungsformats das erlaubt keine willkürliche Codeausführung.

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage