Pri potvrdzovaní používateľa alebo pri niečom podobnom nikdy nesmiete uchovávať heslo ako obyčajný text.
Keďže mnoho jednotlivcov používa rovnaké heslo, ak útočník objaví databázu nezašifrovaných hesiel, možno ich jednoducho použiť v spojení so zodpovedajúcimi e-mailami na vstup na prepojenú webovú stránku alebo účet a dokonca ich použiť na pokus o prístup k iným účtom.
Heslá sú dnes často hašované, keď je zadané heslo. Odporúča sa hašovať soľou a uchovávať soľ spolu s hashovaným heslom.
Solenie sa môže zdať ako jeden z krokov v recepte na hash browns, ale v kryptografii sa to týka pridávania náhodných údajov do vstupu hašovacej funkcie, aby sa zabezpečilo, že hash vždy poskytne jedinečný výsledok, aj keď sú vstupy identické.
Výsledkom je, že charakteristický hash vytvorený pridaním soli nás môže brániť pred niekoľkými metódami útoku, vrátane útokov na hash tabuľky, pričom potláča slovník a pokusy offline hrubou silou.
Tu si pomocou útržkov kódu ukážeme, ako použiť „bcrypt“ na zabezpečenie vašich hesiel.
Takže, čo je to „bcrypt“?
Bcrypt je hašovacia knižnica, ktorá podporuje niekoľko jazykov a poskytuje špeciálne šifrovanie hesiel. Aby sa zvýšila bezpečnosť vášho hesla, pri šifrovaní vášho reťazca automaticky vytvára ďalšie náhodné znaky (soľ).
Môžete sa tiež rozhodnúť definovať, koľko ďalších znakov chcete pridať do prichádzajúceho reťazca.
Knižnica bcrypt číta iba bajtový kód, nie surové reťazce. Preto pred odoslaním prichádzajúceho reťazca hesla do bcrypt na zašifrovanie ho musíte najskôr zakódovať.
Šifrovanie a kódovanie nie sú to isté. Len zaisťuje, že reťazec je strojovo čitateľný predtým, ako je zakrytý šifrovacou technikou.
Použitie bcrypt na šifrovanie hesla v Pythone
Python zjednodušuje šifrovanie hesiel bcrypt. Sústredíme sa na to, aby sme to urobili bez pomoci rámca. Ale nebojte sa, ak rozumiete, ako ukladať používateľské vstupy a čítať ich z databázy, postup je rovnaký vo frameworkoch.
inštalácia
Potrebujete iba nastaviť virtuálne prostredie Python a potom použiť IDE ako PyCharm. Knižnica sa potom musí najskôr nainštalovať:
Šifrovanie hesla
Pozrime sa, ako použiť bcrypt na šifrovanie textu po jeho inštalácii:
Vyššie uvedený kód Pythonu vykoná a vydá zašifrovaný bajtový reťazec. Ale zakaždým, keď spustíte skript, výsledok je iný. Bcrypt používa túto metódu na zabezpečenie toho, aby mal každý používateľ heslo, ktoré je špecificky zašifrované.
Mimochodom, ide o šifrovanie hesla.
Porovnanie a potvrdenie hesla pomocou Bcrypt
Čo sa stane, ak chcete uložiť hashované heslo a neskôr skontrolovať, či sa zhoduje s heslom, ktoré používateľ odoslal na overenie?
To je jednoduché. Len autentifikačné heslo musí byť porovnané so záznamom databázy (alebo v tomto prípade v pamäti).
Overovacie heslo musí byť tiež zakódované pred porovnaním s heslom v databáze, pretože bcrypt dokáže čítať iba bajtové reťazce. V podstate porovnáte zakódovaný autentifikačný vstup so zakódovaným hashovaným heslom, ktoré máte momentálne vo svojej databáze.
Poďme si to vyskúšať pomocou fiktívnych vstupov Pythonu:
Po spustení vyššie uvedeného kódu sa zobrazí výzva na zadanie nového hesla. Toto je uložené v pamäti Pythonom. V časti autentifikácie potom zadáte rovnaké heslo, ktoré je pre vás súkromné.
Ak je heslo porovnané a heslo, ktoré bolo predtým zašifrované a uložené sa zhoduje, Python vydá správu o úspechu.
Ak nie, chybové hlásenie sa vytlačí a potom sa pridá veta else.
Základná myšlienka je identická s myšlienkou registrácie a následného dodania hesla do databázy na overenie.
záver
Aj keď sme jednoducho použili šifrované heslá, aby sme ukázali, ako funguje bcrypt v obyčajnej krátkej pamäti Pythonu, jeho skutočná použiteľnosť spočíva v aplikáciách používateľskej základne.
Napriek tomu tento článok demonštruje základné metódy na usporiadanie kódu, aby ste to dosiahli, dokonca aj v reálnych podmienkach.
Napríklad, ak používate Flask, môžete zadať registračné a autentifikačné polia prostredníctvom samostatných webových formulárov namiesto vstupov.
Samozrejme, pri porovnávaní hesiel budete čítať z databázy, ktorá obsahuje zašifrované heslá, ktoré sú uchovávané v reálnom svete.
Jona Nitsch
Ďakujem za toto jednoduché a jednoduché vysvetlenie,
To mi veľmi pomohlo v mojom súčasnom projekte.
Myslím si, že je veľmi dobré, že vzorový kód je obmedzený na nevyhnutné minimum a nie je preťažený ako mnohé iné vysvetlenia.
S pozdravom