Seguridad de Internet: ¿Cuál es la razón técnica por la cual la mayoría de las contraseñas basadas en sitios web no permiten espacios?

Adam tiene razón en que se pueden permitir caracteres, pero hay tres posibles razones por las que los servicios no permiten espacios (en mi opinión, solo una de ellas es una buena razón).

  1. Legado de malos hábitos de programación. Antes de que los sitios “parametrizaran” correctamente todas las entradas, es posible que hayan pasado contraseñas entre los componentes de manera que hubieran tratado un espacio como algo que separa los argumentos.
  2. Espacio en blanco al final o al final. Suponga que crea una contraseña para un sitio (sin espacios) y usa copiar y pegar para ponerla en el formulario. Pega accidentalmente de tal manera que haya un espacio después de la contraseña. Un espacio que nunca quisiste. Si el sitio acepta espacios, tomará ese espacio como parte de la contraseña. Pero no sabrás sobre ese espacio; entonces para usted la contraseña estará sin espacio y no funcionará.
  3. Los espacios son audibles para las personas que te escuchan escribir. Los espacios producen un sonido distintivo en la mayoría de los teclados. Por lo tanto, si va a escribir una contraseña con frecuencia en un entorno donde la gente pueda escucharlo escribir (por ejemplo, en una oficina), podrán aprender la longitud de cada “palabra” en su frase de contraseña y cuántas “palabras” Tiene.

Hoy, considero (2) la única razón “buena” para que los sitios web no permitan espacios. Si un servicio se enfrenta a (1), tienen mayores problemas, y la preocupación sobre (3) debería ser la elección de los usuarios.

Tenga en cuenta que si bien considero que (2) es una “buena” razón, no me parece una razón convincente. Para las (muy pocas) contraseñas que tengo que recordar y escribir, uso espacios (donde puedo), y lo he recomendado a otros aquí: Hacia mejores contraseñas maestras

No existe una razón técnica real para no permitir ningún carácter que un usuario pueda escribir. Los caracteres se escapan para llegar al servidor de manera predecible, y siempre serían reproducibles.

En realidad, las contraseñas nunca deben enviarse al servidor, primero deben cifrarse en el cliente; en cuyo caso los caracteres de entrada no son relevantes.

Personalmente, nunca entendí por qué esto no era parte de la especificación HTML 2.0:

Y, por supuesto, la contraseña debe volver a cifrarse antes de almacenarse en el servidor.