Post

Visualizzazione dei post con l'etichetta password

Spring Security 3.1: StandardPasswordEncoder

Immagine
DOMANDA: Come posso criptare le password  con Spring Security 3.1 ? RISPOSTA: Per codificare le password in modo  sufficientemente sicuro , bisogna seguire i seguenti step: 1. utilizzare un codificatore hash che implementi un buon algoritmo 2. aggiungere il salt 3. concatenare una stringa randomica al salt.  Fortunatamente tutti questi fattori sono facilmente implementabili con Spring Security  utilizzando pochi step di configurazione. Nel nostro esempio utilizzeremo  la classe StandardPasswordEncoder .  Essa è in grado di codificare la password con l'algoritmo di hashing SHA-256  ed aggiungere, in automatico, un valore di salt randomico di 8 byte. Inoltre, passando una stringa al costruttore (nell'esempio di seguito: "123456"), Spring la concatenerà al salt generato rendendo più robusto il sistema di sicurezza.    Ecco quindi le righe da aggiungere al nostro file di configurazione spring-security.xml : <beans:bean id = "enco

Codifica sicura della password con SHA256

DOMANDA: Come posso creare un sistema di conservazione sicura delle password nel database della mia applicazione? RISPOSTA: Il metodo più usato per conservare in maniera sicura le password consiste nel " cifrarle " con alcuni algoritmi che utilizzano funzioni non invertibili ( one-way ). Nell'esempio vi mostrerò come cifrare utilizzando SHA256 , attualmente un buon compromesso tra sicurezza e costi computazionali per un'applicazione media. In ogni caso vedremo quanto è facile modificare il tipo di cifratura utilizzata. Di seguito la classe  PwdCoder che effettua la codifica e il test della password : package codificapassword; public class PwdCoder{ public static String getEncodedPassword(String clearTextPassword) throws NoSuchAlgorithmException { MessageDigest md = MessageDigest.getInstance("SHA-256"); md.update(clearTextPassword.getBytes()); return HexString.bufferToHex(md.digest()); /

Validazione di password con Regular Expression

DOMANDA: Come posso convalidare una password di almeno 8 caratteri che deve contenere almeno un carattere e almeno un numero? RISPOSTA: La soluzione più laboriosa consiste nell'effettuare la ricerca all'interno della stringa con i metodi classici di java (operazioni su stringhe). Vorrei però proporvi un metodo alternativo più elegante e compatto utilizzando le Regular Expression : Questo codice verifica se la password inserita è lunga almeno 8 e massimo 20 caratteri e contiene almeno una lettera e almeno un numero: package regex;      public class RegexTest { public static void main(String args[]){ Pattern pattern = Pattern.compile( "((?=.*[0-9])(?=.*[a-zA-Z]).{8,20})" ); Matcher matcher = pattern.matcher( "password1" ); System.out.println(matcher.matches()); } } oppure, semplicemente: package regex;      public class RegexTest { public static void main(String args[]