Ves al contingut principal

3. PHP Passwords

És fonamental emmagatzemar correctament les contrasenyes en qualsevol aplicació web, desenvolupada en qualsevol llenguatge. La seguretat dels usuaris depèn directament d'això. Una bretxa de seguretat on les contrasenyes es revelin pot suposar un robatori d'identitat o un accés no autoritzat a serveis.

Per què és crucial emmagatzemar-les bé?

El mètode d'emmagatzematge mai ha de ser en text pla. Si un atacant aconsegueix accedir a la base de dades, tindrà totes les contrasenyes sense cap esforç. 

La solució universalment acceptada és utilitzar funcions de hashing segures i robustes. El hashing és un procés unidireccional: transforma la contrasenya en una cadena de caràcters (el hash) que és gairebé impossible de revertir.

El hashing segur

  1. Algorisme Fort: Cal utilitzar algorismes moderns i lents com Argon2 (el millor actualment) o Bcrypt (molt recomanable). PHP, per exemple, ofereix la funció password_hash() que gestiona això de manera excel·lent. Algorismes antics i ràpids com MD5 o SHA-1 estan obsolets i s'han d'evitar.

  2. Salt: Cada hash ha d'incloure un salt únic i aleatori. Això garanteix que, encara que dos usuaris tinguin la mateixa contrasenya, el seu hash serà diferent, frustrant els atacs rainbow table. Els algorismes moderns com Bcrypt i Argon2 integren el salt automàticament.

  3. Factor de Cost/Treball: La funció de hashing ha de ser lenta. Aquesta lentitud no afecta significativament l'experiència de l'usuari, però incrementa exponencialment el temps necessari perquè un atacant utilitzi brute-forcing.