Non devi mai mantenere una password in chiaro mentre confermi un utente o fai qualcosa di simile.
Poiché molte persone utilizzano la stessa password, se un utente malintenzionato scopre un database di password non crittografate, possono essere facilmente utilizzate insieme a e-mail corrispondenti per accedere al sito Web o all'account collegato e persino utilizzate per provare ad accedere ad altri account.
Le password vengono spesso sottoposte a hash oggi quando viene fornita una password. Si consiglia di eseguire l'hash con il sale e di conservare il sale insieme alla password con hash.
La salatura potrebbe sembrare uno dei passaggi di una ricetta per gli hash brown, ma in crittografia si riferisce all'aggiunta di dati casuali all'input di una funzione hash per garantire che l'hash fornisca sempre un risultato unico anche se gli input sono identici.
Di conseguenza, l'hash distintivo creato dall'aggiunta del sale può difenderci da diversi metodi di attacco, inclusi gli attacchi agli hash table, mentre soffocano i dizionari e i tentativi offline di forza bruta.
Qui, con l'aiuto di frammenti di codice, dimostreremo come utilizzare "bcrypt" per proteggere le tue password.
Allora, cos'è 'bcrypt'?
Bcrypt è una libreria di hashing che supporta diverse lingue e fornisce una speciale crittografia delle password. Per aumentare la sicurezza della tua password, produce automaticamente caratteri casuali aggiuntivi (sale) durante la crittografia della tua stringa.
Puoi anche scegliere di definire quanti caratteri aggiuntivi desideri aggiungere a una stringa in arrivo.
La libreria bcrypt legge solo byte code, non stringhe grezze. Pertanto, prima di inviare una stringa di password in ingresso a bcrypt per la crittografia, è necessario prima codificarla.
Crittografia e codifica non sono la stessa cosa. Si assicura solo che una stringa sia leggibile dalla macchina prima di essere coperta da una tecnica di crittografia.
Utilizzo di bcrypt per crittografare una password in Python
Python semplifica la crittografia della password bcrypt. Ci concentreremo sul fare questo senza l'aiuto di una struttura. Ma non preoccuparti, se capisci come salvare gli input degli utenti e leggerli dal database, la procedura è la stessa nei framework.
Installazione
Devi solo configurare un ambiente virtuale Python e quindi utilizzare un IDE come PyCharm. La libreria deve quindi essere prima installata:
Crittografia della password
Vediamo come utilizzare bcrypt per crittografare un testo dopo che è stato installato:
Il suddetto codice Python esegue ed emette una stringa di byte crittografata. Ma ogni volta che esegui lo script, il risultato è diverso. Bcrypt utilizza questo metodo per assicurarsi che ogni utente disponga di una password specificamente crittografata.
Questo, per inciso, è per la crittografia della password.
Confronto e conferma password tramite Bcrypt
Cosa succede se si desidera salvare la password con hash e verificare in seguito se corrisponde alla password inviata da un utente per l'autenticazione?
È semplice. Solo la password di autenticazione deve essere confrontata con la voce del database (o in memoria in questo caso).
Anche la password di autenticazione deve essere codificata prima di essere confrontata con quella nel database perché bcrypt può leggere solo stringhe di byte. Fondamentalmente, confronterai un input di autenticazione codificato con la password con hash codificata che hai attualmente nel tuo database.
Proviamolo usando input Python fittizi:
Dopo aver eseguito il suddetto codice, viene richiesta una nuova password. Questo viene salvato in memoria da Python. Nella sezione di autenticazione, inserirai quindi la stessa password, che è privata per te.
Se la password viene confrontata con quella precedentemente crittografata e salvata la corrispondenza, Python emette un messaggio di successo.
In caso contrario, viene stampato il messaggio di errore e viene aggiunta la frase else.
L'idea fondamentale è identica a quella di registrarsi e poi fornire una password ad un database per l'autenticazione.
Conclusione
Anche se abbiamo semplicemente utilizzato password crittografate per mostrare come funziona bcrypt nella semplice memoria corta Python, la sua effettiva applicabilità risiede nelle app di base dell'utente.
Tuttavia, questo articolo illustra i metodi essenziali per organizzare il codice per ottenere ciò, anche in circostanze reali.
Ad esempio, se stai utilizzando Flask, puoi fornire i campi di registrazione e autenticazione tramite moduli Web separati anziché input.
Ovviamente, durante il confronto delle password, leggerai da un database che contiene password crittografate che vengono conservate nel mondo reale.
Jona Nitsch
Grazie per questa spiegazione semplice e semplice,
Questo mi ha aiutato molto nel mio progetto attuale.
Penso che sia molto positivo che il codice di esempio sia limitato al minimo indispensabile e non sovraccaricato come tante altre spiegazioni.
Porgiamo i nostri migliori saluti