Soha ne tároljon jelszót egyszerű szövegben, miközben egy felhasználót igazol, vagy valami hasonlót végez.
Mivel sok személy ugyanazt a jelszót használja, ha a támadó titkosítatlan jelszavakat tartalmazó adatbázist fedez fel, könnyen felhasználhatók a megfelelő e-mail-címekkel együtt, hogy belépjenek a hivatkozott webhelyre vagy fiókba, és még más fiókokhoz is hozzáférhetnek.
A jelszavakat ma gyakran kivonatolja, amikor megadják a jelszót. Javasoljuk, hogy sóval kivonatolja, és a sót a kivonatolt jelszóval együtt tartsa.
A sózás a hash browns receptjének egyik lépésének tűnhet, de a kriptográfiában véletlenszerű adatok hozzáadását jelenti a hash függvény bemenetéhez, így biztosítva, hogy a hash mindig egyedi eredményt adjon, még akkor is, ha a bemenetek azonosak.
Ennek eredményeként a só hozzáadásával létrehozott jellegzetes hash megvédhet minket számos támadási módszertől, beleértve a hash-táblázatos támadásokat, miközben elfojtja a szótárat és a brute force offline próbálkozásokat.
Itt kódrészletek segítségével bemutatjuk, hogyan használhatja a „bcrypt”-et jelszavai védelmére.
Szóval, mi az a „bcrypt”?
A Bcrypt egy kivonatoló könyvtár, amely több nyelvet is támogat, és speciális jelszótitkosítást biztosít. A jelszó biztonságának növelése érdekében a karakterlánc titkosítása során automatikusan további véletlenszerű karaktereket (salt) állít elő.
Azt is megadhatja, hogy hány további karaktert kíván hozzáadni egy bejövő karakterlánchoz.
A bcrypt könyvtár csak bájtkódot olvas, nyers karakterláncokat nem. Ezért, mielőtt elküldene egy bejövő jelszó-karakterláncot a bcrypt titkosításhoz, először kódolnia kell azt.
A titkosítás és a kódolás nem ugyanaz. Csak arról gondoskodik, hogy egy karakterlánc gépi olvasható legyen, mielőtt titkosítási technikával elfedné.
A bcrypt használata jelszó titkosításához Pythonban
A Python egyszerűvé teszi a bcrypt jelszótitkosítást. Arra fogunk koncentrálni, hogy ezt keretrendszer segítsége nélkül tegyük. De ne aggódjon, ha érti, hogyan kell elmenteni a felhasználói bemeneteket és kiolvasni őket az adatbázisból, akkor az eljárás ugyanaz a keretrendszerekben.
Telepítés
Csak be kell állítania egy Python virtuális környezetet, majd olyan IDE-t kell használnia, mint a PyCharm. Ezután először telepíteni kell a könyvtárat:
Jelszó titkosítása
Nézzük meg, hogyan lehet a bcrypt használatával titkosítani egy szöveget a telepítés után:
A fent említett Python kód egy titkosított bájtkarakterláncot hajt végre és ad ki. De minden alkalommal, amikor futtatja a szkriptet, az eredmény más. A Bcrypt ezt a módszert használja annak biztosítására, hogy minden felhasználónak legyen kifejezetten titkosított jelszava.
Ez egyébként a jelszó titkosítására vonatkozik.
Jelszavak összehasonlítása és megerősítése Bcrypt használatával
Mi történik, ha el szeretné menteni a kivonatolt jelszót, és később ellenőrizni szeretné, hogy megegyezik-e a felhasználó által hitelesítésre beküldött jelszóval?
Ez egyszerű. Csak a hitelesítő jelszót kell összehasonlítani az adatbázis bejegyzésével (vagy ebben az esetben a memóriában).
A hitelesítő jelszót is kódolni kell, mielőtt összehasonlítaná az adatbázisban lévővel, mert a bcrypt csak bájtkarakterláncokat tud olvasni. Alapvetően a kódolt hitelesítési bemenetet hasonlítja össze az adatbázisban jelenleg található kódolt kivonatolt jelszóval.
Teszteljük ezt fiktív Python bemenetekkel:
A fent említett kód futtatásakor a rendszer új jelszót kér. Ezt a Python menti a memóriába. A hitelesítési részben ezután ugyanazt a jelszót kell megadnia, amely az Ön számára privát.
Ha összehasonlítja a jelszót a korábban titkosított és az egyezést elmentett jelszóval, a Python sikerüzenetet küld.
Ha nem, akkor a hibaüzenet kinyomtatásra kerül, majd hozzáadódik az else mondat.
Az alapötlet megegyezik a regisztrációval, majd a jelszó megadásával egy adatbázishoz hitelesítés céljából.
Következtetés
Bár egyszerűen titkosított jelszavakat használtunk annak bemutatására, hogyan működik a bcrypt a sima Python rövid memóriájában, tényleges alkalmazhatósága a felhasználói bázisú alkalmazásokban rejlik.
Mindazonáltal ez a cikk bemutatja a kód rendszerezésének alapvető módszereit, hogy ezt még valós körülmények között is elérhesse.
Ha például a Flaskot használja, a regisztrációs és hitelesítési mezőket külön webes űrlapokon is megadhatja bevitelek helyett.
Természetesen a jelszavak összehasonlítása során egy olyan adatbázisból olvashat, amely titkosított jelszavakat tartalmaz, amelyeket a valós világban tárolnak.
Jona Nitsch
Köszönöm ezt az egyszerű és egyszerű magyarázatot,
Ez sokat segített a jelenlegi projektemben.
Szerintem nagyon jó, hogy a példakód a minimumra korlátozódik, és nincs túlterhelve, mint annyi más magyarázat.
Üdvözlettel: