Pythons sicherste Methode zum Speichern und Abrufen von Kennwörtern aus einer Datenbank
Suche speichern Benutzernamen und Passwörter in einer Datenbank, und Frage mich, was der sicherste Weg, dies zu tun ist. Ich weiß, ich habe zu verwenden, ein Salz irgendwo, bin mir aber nicht sicher, wie Sie Sie zu erzeugen, Sie sicher oder wie wird es angewendet, um das Kennwort zu verschlüsseln. Einige Beispiele für Python-Quelltext, wäre sehr dankbar. Danke.
Kommentar zu dem Problem - Öffnen
Viele Infos hier: stackoverflow.com/questions/1183161/...
InformationsquelleAutor der Frage ensnare | 2010-04-03
Du musst angemeldet sein, um einen Kommentar abzugeben.
Speichern das Passwort+salt als hash und das Salz. Werfen Sie einen Blick auf, wie Django es tut: basic-docs und Quelle.
In der db speichern Sie
<type of hash>$<salt>$<hash>
in ein einzelnes char-Feld. Sie können auch speichern Sie die drei Teile in separaten Feldern.Die Funktion, um das Kennwort festzulegen:
Den get_hexdigest ist nur ein dünner wrapper um einige hashing-algorithmen. Sie können hashlib. So etwas wie
hashlib.sha1('%s%s' % (salt, hash)).hexdigest()
Und die Funktion um das Passwort zu prüfen:
InformationsquelleAutor der Antwort rz.
Ich denke, es ist am besten verwenden Sie ein Paket gewidmet hashing von Passwörtern für diese wie passlib: http://packages.python.org/passlib/ Gründen, wie ich hier erklärt: https://stackoverflow.com/a/10948614/893857
InformationsquelleAutor der Antwort koffie
Antwortete ich dieses hier: https://stackoverflow.com/a/18488878/1661689, und so hat @Koffie.
Ich weiß nicht, wie oft genug betonen, dass die akzeptierte Antwort ist NICHT sicher. Es ist besser als plain-text, und besser als eine ungesalzene hash, aber es ist immer noch extrem anfällig Wörterbuch und auch brute-force-Angriffe. Stattdessen, bitte verwenden Sie eine LANGSAME KDF wie bcrypt (oder mindestens PBKDF2 mit 10.000 Iterationen)
InformationsquelleAutor der Antwort Terrel Shumway
Wenn du genug Kontrolle über beide Endpunkte der Anwendung, die absolute beste Weg ist, mit PAK-Z+.
(Edited: die original-version empfohlen SRP aber PAK-Z+ hat einen Nachweis von Sicherheit.)
InformationsquelleAutor der Antwort Paul Crowley
Hier ist ein einfacher Weg (entnommen aus effbot), vorausgesetzt, die Passwörter mit einer Länge größer als 8, wird kein problem sein*:
zur Erzeugung der Passwort :
*: Ein Passwort mit einer Länge größer als 8 ist beraubt von den rechten bis zu 8 chars lange
InformationsquelleAutor der Antwort llazzaro