Při potvrzování uživatele nebo při provádění něčeho podobného nikdy nesmíte uchovávat heslo v prostém textu.
Vzhledem k tomu, že mnoho jednotlivců používá stejné heslo, pokud útočník objeví databázi nezašifrovaných hesel, lze je snadno použít ve spojení s odpovídajícími e-maily ke vstupu na propojenou webovou stránku nebo účet a dokonce je použít k pokusu o přístup k jiným účtům.
Hesla jsou dnes často hašována při zadání hesla. Doporučuje se hašovat solí a udržovat sůl společně s hashovaným heslem.
Solení se může zdát jako jeden z kroků v receptu na hash browns, ale v kryptografii se to týká přidání náhodných dat do vstupu hashovací funkce, aby bylo zajištěno, že hash vždy poskytne jedinečný výsledek, i když jsou vstupy identické.
Výsledkem je, že charakteristický hash vytvořený přidáním soli nás může bránit před několika útočnými metodami, včetně útoků na hashovací tabulky, a zároveň potlačit pokusy o použití slovníku a hrubou silou.
Zde si pomocí úryvků kódu ukážeme, jak používat „bcrypt“ k zabezpečení vašich hesel.
Takže, co je to 'bcrypt'?
Bcrypt je hašovací knihovna, která podporuje několik jazyků a poskytuje speciální šifrování hesel. Pro zvýšení bezpečnosti vašeho hesla automaticky vytváří další náhodné znaky (sůl) při šifrování vašeho řetězce.
Můžete také definovat, kolik dalších znaků chcete přidat do příchozího řetězce.
Knihovna bcrypt čte pouze byte kód, nikoli surové řetězce. Proto před odesláním příchozího řetězce hesla do bcrypt k zašifrování jej musíte nejprve zakódovat.
Šifrování a kódování nejsou totéž. Jen zajišťuje, že řetězec je strojově čitelný, než bude zakryt šifrovací technikou.
Použití bcrypt k šifrování hesla v Pythonu
Python zjednodušuje šifrování hesel bcrypt. Zaměříme se na to, abychom to udělali bez pomoci rámce. Ale nebojte se, pokud rozumíte tomu, jak ukládat uživatelské vstupy a číst je z databáze, postup je ve frameworkech stejný.
Instalace
Potřebujete pouze nastavit virtuální prostředí Pythonu a poté použít IDE, jako je PyCharm. Nejprve je třeba nainstalovat knihovnu:
Šifrovací heslo
Podívejme se, jak použít bcrypt k šifrování textu po jeho instalaci:
Výše uvedený kód Pythonu spustí a vydá zašifrovaný bajtový řetězec. Ale pokaždé, když skript spustíte, výsledek je jiný. Bcrypt používá tuto metodu, aby se ujistil, že každý uživatel má heslo, které je specificky zašifrováno.
To je mimochodem pro šifrování hesel.
Porovnání hesel a potvrzení pomocí Bcrypt
Co se stane, pokud si přejete uložit hashované heslo a později zkontrolovat, zda se shoduje s heslem, které uživatel odeslal k ověření?
To je jednoduché. Pouze ověřovací heslo musí být porovnáno se záznamem v databázi (nebo v tomto případě v paměti).
Ověřovací heslo musí být také zakódováno před porovnáním s heslem v databázi, protože bcrypt umí číst pouze bajtové řetězce. V podstatě porovnáte zakódovaný autentizační vstup se zakódovaným hashovaným heslem, které máte aktuálně ve své databázi.
Pojďme to otestovat pomocí fiktivních vstupů Pythonu:
Po spuštění výše uvedeného kódu budete vyzváni k zadání nového hesla. To je uloženo v paměti Pythonem. V části ověřování pak zadáte stejné heslo, které je pro vás soukromé.
Pokud je heslo porovnáno a heslo, které bylo dříve zašifrováno a uloženo, se shoduje, Python vydá zprávu o úspěchu.
Pokud ne, chybová zpráva se vytiskne a přidá se věta else.
Základní myšlenka je totožná s myšlenkou registrace a následného dodání hesla do databáze pro ověření.
Proč investovat do čističky vzduchu?
I když jsme jednoduše použili šifrovaná hesla, abychom ukázali, jak bcrypt funguje v prosté krátké paměti Pythonu, jeho skutečná použitelnost spočívá v uživatelských aplikacích.
Tento článek však ukazuje základní metody, jak uspořádat kód, abyste toho dosáhli, a to iv reálných podmínkách.
Například, pokud používáte Flask, můžete zadat registrační a autentizační pole prostřednictvím samostatných webových formulářů namísto vstupů.
Samozřejmě při porovnávání hesel budete číst z databáze, která obsahuje zašifrovaná hesla, která jsou uchovávána v reálném světě.
Jona Nitsch
Děkuji za toto jednoduché a jednoduché vysvětlení,
To mi hodně pomohlo v mém současném projektu.
Myslím, že je velmi dobré, že ukázkový kód je omezen na naprosté minimum a není přetížen jako mnoho jiných vysvětlení.
S pozdravem