¿Por qué los sitios web restringen el número y la elección de los caracteres en una contraseña? [duplicar]

12

Me estoy registrando en el sitio web de una compañía de seguros en este momento, y mi contraseña tiene 16 caracteres de longitud, usando una buena variedad de letras, números, caracteres especiales, etc. Sin embargo, aquí está su lista de restricciones:

  

Tenga en cuenta su contraseña:

     
  • debe tener entre 6 y 12 caracteres
  •   
  • no debe contener espacios, caracteres especiales / internacionales
  •   
  • no debe contener su nombre de usuario, nombre o apellido
  •   
  • distingue entre mayúsculas y minúsculas
  •   
  • debe contener al menos 1 número y 1 letra
  •   

Puedo entender un mínimo de 6 caracteres, no puedo permitir partes de su nombre, distingo entre mayúsculas y minúsculas y necesito al menos 1 número y letra. La parte que no entiendo es restringir la elección de los caracteres que puedes usar y tener un límite superior.

¿Por qué los sitios web hacen esto? Lo único que se me ocurre es que no conocen los conceptos básicos de hash de una contraseña, lo que lo aseguraría mejor que cualquier otra cosa y eliminaría cualquier problema de seguridad.

Si elijo escribir DELETE FROM users WHERE 1=1 como mi contraseña, se me debería permitir. El hash MD5 de PHP se convierte en fe5d54132b51b7d65ab89b739b600b4b , lo que no creo que dañe nada.

    
pregunta Tarka 28.10.2010 - 16:24

6 respuestas

17

Se trata de que sus programadores (o su administración) sean perezosos o sin educación. No se necesita mucho más trabajo para que su sistema acepte caracteres, pero significa que necesita dedicar algo de tiempo a pensar en los ataques de inyección de SQL y las secuencias de comandos entre sitios, asegurándose de que todas las partes del sistema puedan lidiar con eso. , etc. Puede ser más barato y rápido simplemente prohibir cualquier carácter que pueda ser un problema.

    
respondido por el KeithB 28.10.2010 - 16:44
10

Por lo general, las restricciones sobre los "caracteres extendidos" se deben a que la administración en los grupos de programación de bancos solían ser programadores COBOL, y saben que los conjuntos de caracteres son difíciles.

    
respondido por el user4051 28.10.2010 - 18:36
2

Los bancos restringen los caracteres especiales, probablemente porque están almacenando las contraseñas en texto plano, que no deberían estar haciendo , y temen que algunos caracteres especiales filtrarse en su lógica empresarial y piratearlo.

En cuanto al límite de número de caracteres, solo puedo especular que el software en algunos de los mainframes que todavía usan no puede manejar campos de texto más grandes que eso.

    
respondido por el Robert Harvey 28.10.2010 - 16:53
1

Puedo entender la prohibición de caracteres especiales, pero no hay excusa para los límites de longitud de contraseña. Utilizo un administrador de contraseñas y me gusta usar contraseñas ridículamente largas. Como no tengo que recordarlos ni escribirlos, ¿por qué no?

Puedo pensar en una sola razón por la que un sitio puede limitar la longitud de la contraseña. Las personas que administran el sitio temen que si dejan que sus usuarios usen contraseñas realmente buenas, las olvidarán con más frecuencia y tendrán que responder un par de llamadas o correos electrónicos de soporte. Es una excusa muy aburrida, pero es la única razón posible para una política tan estúpida que puedo encontrar.

    
respondido por el raven 28.10.2010 - 16:52
0

Esta decisión parece estar basada en lo que es práctico para la mayoría de los usuarios. A diferencia de los programadores y técnicos, muchos usuarios de banca en línea parecen tener dificultades para recordar un pin de 4 caracteres, y mucho menos una contraseña de longitud decente. ¿Cuál es uno de los controladores para la autenticación de 2 factores? Déles un dispositivo que produzca una contraseña para que no tengan que perder el dispositivo.

Con respecto al "por qué no hay caracteres especiales": no es pereza, es una decisión sensata para reducir el potencial de ataque. Si permite apóstrofes, hashes, signos de igualdad, etc., debe estar 100% seguro de que su rutina de validación de entrada detectará los intentos de inyección de SQL, por ejemplo, si en la lista blanca solo aparecen los caracteres que desea que aparezcan en la entrada, se ahorra mucho. de daño potencial.

En principio, estoy de acuerdo con Matteo: en un mundo ideal, las contraseñas solo deben almacenarse con un hash de 1 vía; sin embargo, un banco perdería clientes si hicieran esto, así que tiene que haber una. A menudo, además de los hashes almacenados en la base de datos principal, hay un campo cifrado, ya sea en la misma base de datos o en una base de datos de contraseñas separada solo para esta función

    
respondido por el Rory Alsop 04.12.2010 - 14:39
-1

No estoy de acuerdo con la restricción de contraseña en este caso, pero en general, permitir un conjunto completo de caracteres Unicode para la contraseña podría presentar algunos problemas. P.ej. Si el sistema permite recuperar la contraseña por correo electrónico mediante algún mecanismo de validación, es posible que la contraseña no se presente correctamente en el cliente de correo electrónico debido a la falta de soporte de Unicode.

En cuanto a por qué los espacios y otros caracteres especiales no están permitidos, por ejemplo. en el correo electrónico de recuperación de contraseña:

Su contraseña es: en realidad otra cosa, no esta

Ermm ... ¿confuso, sí?

vs

Su contraseña es ActuallySomethingElseNotThis1

    
respondido por el o.k.w 28.10.2010 - 16:32

Lea otras preguntas en las etiquetas