Cuando me inscribí en un servicio de DHL (servicio de envío de paquetes alemán), tenían la pauta de contraseña más extraña que he visto hasta ahora:
- Al menos 8 caracteres pero no más de 13.
- Uso exclusivo de caracteres "válidos". Los caracteres dados no incluían
'
o"
o;
o\
, que son las cosas que intentaría usar en una inyección SQL primero. - Al menos una letra mayúscula y minúscula.
- Un dígito, pero no al principio .
¿Por qué uno prohibiría un dígito como primer carácter? En un mundo perfecto, saltarían y harían hash de la contraseña utilizando bcrypt
o scrypt
y todas las restricciones en el límite superior de la entropía podrían eliminarse fácilmente. Al parecer, tienen un sistema de almacenamiento débil como VARCHAR(13)
o una mezcla triste de código heredado y administración de culto de carga.
Todavía no puedo entender la regla acerca de que el dígito no aparece al principio de la contraseña. ¿Por qué uno haría eso? Lo único en lo que puedo pensar es que PHP evalúa la expresión "1Test" == 1
como verdadera. De lo contrario, los identificadores en los lenguajes de programación tampoco deben comenzar con un dígito. Quizás este es el origen de los "personajes válidos"?
¿Se puede adivinar qué está haciendo DHL en el backend?