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
Proyectos Symfony destacados
La forma más sencilla de generar el backend de tus aplicaciones Symfony. Ver más
Síguenos en @symfony_es para acceder a las últimas noticias.