Il tuo eCommerce non decolla?
Scopri la Performance Academy: i corsi formativi gratuiti
per migliorare i risultati del tuo negozio online

Sicurezza: password hashing

Sicurezza: password hashing

Ogni sviluppatore web avrà avuto a che fare con siti web che hanno la necessità di avere account utente: in un e-commerce, ad esempio, è molto utile per permettere agli utenti registrati di effettuare ordini senza dover reinserire tutti i dati di fatturazione e spedizione. Per poter accedere al proprio account, al momento del primo acquisto/accesso al sito verrà, a seconda della nostra scelta, chiesto di scegliere un username (potrebbe essere usata anche la mail) e una password, oppure potrà essere creata automaticamente una password per l’utente.
In entrambi i casi, per ragioni di sicurezza, bisogna che la password sia difficile da indovinare e che sia salvata nel database, non in chiaro, cosi come verrà poi inserita dall’utente per effettuare il login, ma in un formato crittografato, in modo da non poter aver accesso alla reale password dell’utente, in caso di hacking.

login

Creare una password forte

Per prima cosa bisogna chiedere all’utente di inserire una password non semplice da indovinare da parte di un malintenzionato. Spesso questa password sarà difficilmente memorizzabile anche da noi… purtroppo. In effetti al momento della richiesta della password dovremmo assicurarci che non sia un semplice numero, e nemmeno una parola di uso comune perché più facilmente indovinabili.
Indovinabili…ma come? Beh l’esempio più banale potrebbe essere un conoscente che vuole entrare nel nostro account. Conoscendo le nostre abitudini potrebbe provare password comuni quali: nome della fidanzata, nome dei figli, data di nascita etc.
Un altro caso è un hacking più di alto livello: Tramite appositi software si può, conoscendo l’username di un utente provare password a ripetizione, con un attacco di tipo brute force o un attacco dictionary.
Brute Force è un algoritmo di risoluzione di un problema dato che consiste nel verificare tutte le soluzioni teoricamente possibili fino a che si trova quella effettivamente corretta: questa soluzione è lenta e dispendiosa. Un attacco di tipo dictionary è più mirato e prova come password parole conosciute.
Questo spiega perché è consigliato utilizzare password lunghe e con insiemi di caratteri, numeri e simboli.

 

password

Salvataggio password nel database

Le password non devono mai essere salvate in chiaro nel database ma in modo criptato, questo perché bucando il nostro sito un hacker potrebbe avere accesso al database. E quindi accesso a tutti i dati di login degli utenti con la corretta associazione username e password.

Per questo motivo il processo di registrazione della password dovrebbe avvenire in questo modo:

  • chiedere all’utente di inserire una password forte, composta da minimo N caratteri e da almeno stringhe miste di caratteri, numeri e simboli.
  • l’utente inserisce la password in chiaro (anche se il browser la visualizzerà coperta)
  • controllare se effettivamente la password soddisfa i requisti di sicurezza richiesti
  • criptare la password con un sistema unidirezionale, che non preveda una funzione per trasformare la password criptata in password reale
  • salvare nel database la password criptata

Quando l’utente effettuerà il login invece:

  • l’utente inserirà la password in chiaro (anche se il browser la visualizzerà coperta)
  • la password verrà criptata
  • la password criptata verrà confrontata con la password criptata inserita nel database
  • se le password criptate coincidono verrà effettuato il login

 

secure password

Hashing della password

La password deve essere criptata in modo sicuro. Ci sono tanti sistemi per creare un hash di una stringa o per criptarla, ma l’unico modo per farlo nel modo corretto è che sia a una sola via, quindi che non esista una funzione per tramutare l’hashing nella password inserita dall’utente. Una volta si usava la funzione md5, ritenuta non più sicura, al suo posto vengono utilizzate funzioni quali crypt, sha256, sha512, RipeMD o Whirpool.
Nonostante le password siano criptate nel database bisogna comunque forzare l’utente a scrivere una password sicura, poiché per alcune parole sono disponibili database di corrispondenza tra password e suo hashing. Un consiglio utile potrebbe essere aggiungere alla password inserita dall’utente una stringa casuale e poi inserire nel database l’hashing delle due parole concatenate.

Per esempio se prendiamo la password da non utilizzare ‘123456’ avremo

sha256 (‘123456’) => ‘8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92’

Se cerchiamo online un tool per decriptare la password riusciremo facilmente a passare dalla stringa encodata a 123456.
Se però salviamo a database la password ‘123456’ + una stringa casuale ad esempio ‘Hjza.23!o’ otterremo:

sha256 (‘123456Hjza.23!o’) => ‘3ce5501dbec02a5f5e4cda8bec8f93d0c736b8c9bcb0019a12b1b31ecb99334c’

Non troveremo alcun risultato con i tool per decriptare.

Quindi inseriremo a database la password originale con la stringa aggiuntiva, il tutto criptato. Quando dovremo confrontare la password in chiaro inserita dall’utente con quella nel database, dovremo ricordarci di aggiungere la stringa aggiuntiva prima di criptarla e confrontarla con la base di dati.

 

 

Invia commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Diamo i numeri!
home_icon_utenti
570

milioni di mail
I volumi annui delle nostre campagne email marketing.
home_icon_campagne
7.000

sviluppatori
La community che ha utilizzato tecnologia MW.
home_icon_fatturato
18

anni di attività
Un indicatore di esperienza e affidabilità.
home_icon_lead
15
persone + 20 collaboratori esterni
Un team completo di professionisti specializzati.
home_icon_crescita
1000 +

clienti
Le aziende che ci hanno dato fiducia.
Scarica “Mobile Commerce in Italia”

Inserisci nome e indirizzo mail per scaricare subito e gratuitamente il documento.

Ho letto e accettato l’informativa sulla privacy.

* Questa informazione è necessaria, grazie.

×
Scarica “e-Commerce Launch Checklist”

Inserisci nome e indirizzo mail per scaricare subito e gratuitamente il documento.

Ho letto e accettato l’informativa sulla privacy.

* Questa informazione è necessaria, grazie.

×
Scarica “Nuova Presentazione Merlin Wizard”

Inserisci nome e indirizzo mail per scaricare subito e gratuitamente il documento.

Ho letto e accettato l’informativa sulla privacy.

* Questa informazione è necessaria, grazie.

×