¿Por qué los sitios web críticos, como los bancos, establecen una longitud máxima de contraseña y no permiten ciertos caracteres?

¡Ajá! Así que aborda tus preguntas una por una:

¿Por qué hay una longitud máxima de contraseña?
Las computadoras no pueden almacenar grandes cantidades o cadenas. De hecho, por lo general, la cadena más larga que toma un programa es de 2147483647 caracteres, o [math] 2 ^ {31} -1 [/ math]. Esto se debe a que el número entero máximo que puede tomar una computadora es 2147483647. (Si hay algo más grande que eso, hay formas de tratar el gran número como secciones de un número). Es posible tomar cadenas más largas, usando lo mencionado anteriormente. “formas”, pero generalmente la longitud de una contraseña no excederá de 2147483647.

Entonces, ¿por qué limitarían una contraseña a unos 50 caracteres?
Los sitios web generalmente procesan la contraseña en una cadena irreversible única y la almacenan como hash de contraseña. Cuando ingrese su contraseña, el sitio web procesará el valor que ingresó de la misma manera y lo comparará con el hash de contraseña almacenado. Si tiene una contraseña increíblemente larga, el procesamiento será costoso, debido a la gran cantidad de personas con cuentas. También sería más lento. Para ser honesto, tener 50 caracteres versus 51 caracteres no hace una gran diferencia. Va a ser difícil para un ataque de fuerza bruta obtener una contraseña que sea tan larga. (Descargo de responsabilidad: 50 caracteres es un valor arbitrario que se me ocurrió).

Puede ser obvio decir esto, pero la mayoría de las personas probablemente tengan contraseñas de 8-20 caracteres, por lo que desperdiciar dinero extra o esfuerzo para implementar el servicio de contraseña de 2147483647 caracteres también es una pérdida de tiempo.

Relacionado: ¿por qué las contraseñas generadas aleatoriamente (a veces) falibles?
Ningún generador de números aleatorios (RNG) es verdaderamente aleatorio. Teóricamente sería una gran solución para contraseñas agradables, pero las contraseñas aleatorias son ridículamente difíciles de recordar, y la mayoría de las personas no elegirían esa opción.

Además, algunos RNG son algo pirateables. (Descargo de responsabilidad: ningún sitio web grande caería en algo tan tonto como mi ejemplo). Por ejemplo, presionar el botón de restablecimiento de contraseña en un sitio podría cambiar temporalmente la contraseña a algo generado aleatoriamente, como este:
[código]
srand (( doble ) microtime () * 1000000);
[/código]
En ese fragmento, el programador estableció la semilla de número aleatorio (la semilla es en lo que “basa” su número aleatorio) como microtiempo, que es básicamente una representación muy precisa y grande del tiempo como un número. Esto parece estar bien al principio, pero pruébalo un par de veces y te darás cuenta de que agregar “* 1000000” definitivamente no es la idea más brillante. Esencialmente, solo habrá 1000000 posibilidades de la semilla, por lo que un pirata informático podría probar todas las posibilidades y obtener la contraseña generada aleatoriamente en muy poco tiempo.

¿Por qué los desarrolladores no usan algo como SHA para las contraseñas?
Ellas hacen. No consideraría ningún sitio web que almacene contraseñas de texto sin formato como “crítico” o “importante”. Tienen problemas serios. Seriamente. ¿Mencioné que soy REALMENTE serio sobre esto?

¿Por qué no permiten ciertos personajes?
Es parcialmente para evitar que las personas inyecten script a veces. Pero también, nadie va a usar caracteres extraños en sus contraseñas. Simplemente no lo hacen. Entonces, nuevamente, al igual que con el límite de tamaño, no tiene ningún propósito gastar dinero y recursos adicionales para un servicio que permite a cada personaje. (Hey, tienen más de 50,000 caracteres en chino …)


Eso es todo.

¡Que te diviertas!