Nuevo en Symfony 4.3: Codificador nativo de contraseñas

Codificar contraseñas ("password hashing" en inglés) es una de las partes fundamentales de un buen sistema de seguridad. En Symfony 4.3, se añadió un nuevo codificador compatible con la librería libsodium que es la nueva recomendación para codificar contraseñas en vez de bcrypt.

Sin embargo, como los codificadores evolucionan tan rápido, cada vez es menos recomendable seleccionar un codificar específico. De hecho, incluso la función password_hash() de PHP define un valor especial PASSWORD_DEFAULT que selecciona automáticamente el mejor codificador disponible en tu máquina (en las versiones actuales de PHP, sigue siendo Bcrypt, pero esto cambiará en el futuro).

Así que en Symfony 4.3 hemos hecho algunos cambios relacionados con los codificadores. En primer lugar, ahora se recomienda usar el codificador auto en vez de elegir uno específico:

# config/packages/security.yaml
security:
    # ...
    encoders:
        App\Entity\User:
-            algorithm: 'bcrypt'
-            algorithm: 'argon2i'
-            algorithm: 'sodium'
+            algorithm: 'auto'

El valor auto significa que Symfony utiliza automáticamente el mejor codificador disponible. Actualmente Symfony elige sodium si la librería libsodium está instalada y si no, utiliza native, que hace que sea PHP el que elija el mejor codificador.

El valor native está asociado con la nueva clase NativePasswordEncoder, que también se ha añadido en Symfony 4.3. Este codificador trata de utilizar alguna de las variantes de Argon2 (Argon2i o Argon2id) y si ninguna está disponible, utiliza Bcrypt.

En resumen: utiliza auto para que Symfony/PHP elijan el mejor codificador posible. El codificador elegido cambiará en el futuro, así que los usuarios de tu aplicación tendrán sus contraseñas codificadas de manera diferente. Esto no es ningún problema, ya que cada codificador incluye en el valor codificado su "firma", así que Symfony/PHP sabe cómo comprobar si una contraseña es válida.

Esta funcionalidad fue contribuida por Nicolas Grekas en el pull request #31170.

Fuente: New in Symfony 4.3: Native password encoder

Comentarios

Publicada el

24 de junio de 2019

Etiquetas

Proyectos Symfony destacados

La plataforma de eCommerce 100% Symfony que rivaliza con Magento y PrestaShop. Ver más

Síguenos en @symfony_es para acceder a las últimas noticias.