Wenn Python kleiner als 3.3 ist, verwenden Sie die Option -R oder die Umgebungsvariable PYTHONHASHSEED = "random" für DoS-Gegenmaßnahmen.

Wenn Sie in Python 3.3 oder weniger ein "Diktat" erstellen, das einen "Wert" vom Typ str, bytes und datetime enthält, ist die Berechnung äußerst schwierig und kann die CPU stark belasten, und wenn sie von einem Dritten missbraucht wird. Sie können den Dienst beenden.

Um dies zu verhindern, müssen Sie dem Befehl "python" die Option "-R" hinzufügen oder die Umgebungsvariable "PYTHONHASHSEED =" random "angeben. [^ 1]

Die Beschreibung der Option -R in 1. Befehlszeile und Umgebung - Python 3.3.6-Dokumentation lautet: Ich bin.

In früheren Versionen von Python aktiviert diese Option die Hash-Randomisierung. Dies führt dazu, dass str, bytes,Datum / Uhrzeit-Typ__hash__()Der Wert ist "Salz" mit einer unvorhersehbaren Zufallszahl. Der Hash-Wert ist für jeden Python-Prozess festgelegt, wird jedoch zu einem weiteren unvorhersehbaren Wert, wenn Sie Python wiederholt ausführen.

Die Hash-Randomisierung hat die schlechtesten Kosten für die Diktgenerierung O.(n^2)Es dient als Verteidigung gegen DoS-Angriffe, indem ein sorgfältig ausgewählter Eingabewert angegeben wird. Für Details http://www.ocert.org/advisories/ocert-2011-003.Siehe HTML.

Python 3.3 und höher führt standardmäßig eine Hash-Randomisierung durch, die oben genannten Optionen bleiben jedoch aus Kompatibilitätsgründen erhalten. Bitte beachten Sie, dass es wahrscheinlich viele Leute gibt, die noch Python 2-Serien verwenden.

[^ 1]: "zufällig" bedeutet nicht "zufällige Zeichenfolge einfügen", sondern bedeutet, sie wie geschrieben als "zufällig" festzulegen.

Recommended Posts

Wenn Python kleiner als 3.3 ist, verwenden Sie die Option -R oder die Umgebungsvariable PYTHONHASHSEED = "random" für DoS-Gegenmaßnahmen.
Das kürzeste Memo zum Erstellen einer Python-Umgebung, deren Arbeit weniger als 5 Minuten dauert.
[Python] Was wird zuerst ausgeführt, Klassenvariable oder __init__?
[Python] Bestimmen Sie, ob sich ein Koordinatenpunkt innerhalb oder außerhalb des Polygons befindet