verificación top seguridad pruebas precio outgoing guía found example estándar español asvs aplicaciones web-services security unicode username

web services - top - ¿Debe permitirse Unicode en los nombres de usuario?



ws security java (8)

¿Autenticación HTTP? Podría haber algunos problemas al enviar el nombre de usuario (y / o contraseña) unicode a través de los protocolos existentes. Un caso con el que me he encontrado antes es con la autenticación básica. No hay una forma bien definida de manejar el envío de estos nombres de usuario o contraseñas Unicode en los encabezados básicos de autenticación.

¿Por qué la mayoría de los sitios web (¿todos?) Solo admiten nombres de usuario en ASCII. ¿Hay consideraciones de seguridad si un administrador decide comenzar a aceptar nombres de usuario Unicode?


O bien, podríamos dejar de dar una mierda sobre cómo se ve un nombre de usuario, y si podemos pronunciarlo / recordarlo. Esa debería ser la preocupación de los USUARIOS. Si nadie te recuerda, esa es tu pérdida. Y, en cuanto a la suplantación de nombres, eso es casi inevitable en cualquier caso. Y, sin embargo, rara vez oyes hablar de spoofs de nombre de usuario.

Imagina un foro, imagina a alguien publicar con una cuenta que se ve idéntica a la tuya. Te metes en problemas, di que no lo hiciste, publicas un enlace a tu historial, ves que la publicación no está allí. Haga clic en el perfil del hombre que REALMENTE lo publicó, y bam, usted tiene su perfil. Él ahora es bannable.

Tener el mismo nombre no significa que tenga los mismos datos de usuario. Cualquier aplicación que no le facilite la diferenciación de dos usuarios similares es, de todos modos, pobre y necesita ser reescrita.


Si bien es cuestionable por qué debería haber siempre un nombre de usuario y no solo una ''contraseña'' para identificar a un usuario, creo que no hay ninguna razón para rechazar los nombres de usuario Unicode.

Lo que es más importante, es que la contraseña se valide como lanuguage-agnostic: debe tratar las claves independientemente de la configuración del teclado del usuario. Esto significa que "שלום" y "akuo" serían la misma contraseña. Esto es importante, porque el usuario a menudo no ve los caracteres de la contraseña que está escribiendo, y se enojan severamente si el CAPSLOCK está activado.


Si bien puede seguir adelante y permitir unicode, comprenda que algunos nombres de usuario no funcionarán como se esperaba gracias a las diferentes culturas que aplican reglas diferentes a los mismos caracteres.

Considere el caso básico para romper sensibilidades de caso: en turco, los nombres de usuario "Id1" e "id1" son diferentes (en turco hay dos Is diferentes, uno con un punto y otro sin, lo que resulta en 2 letras capitulares y 2 letras pequeñas que lo hacen no coincide con las mismas reglas de captura que el inglés). Entonces, si cualquier persona turca puede ingresar su nombre en su propio idioma, el programa no tratará su nombre como lo esperan, sino que experimentará una extraña transformación al inglés mutante.

Los caracteres latinos especiales en idiomas europeos tienen superposiciones similares, por lo que es aparentemente aleatorio en cuanto al idioma en el que se introducen. Otras regiones del mundo tienen caracteres compartidos similares donde las reglas de uso difieren; en algunos casos, los odios nacionales y culturales podrían provocar algunas personas muy enojadas cuando los personajes que componen su nombre de usuario son tratados como si estuvieran escritos en el idioma de su enemigo odiado (debido a que es la configuración predeterminada de los sistemas operativos para esos caracteres extranjeros).


Tu observación no siempre es verdad. Y, la elección de ASCII es en gran parte factores humanos en lugar de cuestiones técnicas o de seguridad.

Para la mayoría de los casos, es solo por la facilidad de programación. Un programador nunca sabe que todos los software, bibliotecas, utilidades en el sitio web se romperán o no con algunos personajes. ¿Por qué arriesga el desarrollo del sitio web mientras ASCII funciona bien? Además, algún software web empaquetado dificultaría el uso de Unicode en el nombre de usuario. Esto contribuye al problema de que muchos sitios web solo admiten nombres de usuario en ASCII.

Teóricamente, todo el software actual puede manejar bien los datos de 8 bits. No hay problema en el almacenamiento o la transmisión hoy en día. Incluso si algunos protocolos no, pueden traducir en UTF-7 o con otros esquemas de transformación.

Hay algunos problemas con Unicode. Está más del lado del procesamiento de datos. Puede ser visualización, fuentes, preparación de bibliotecas de software y software para caracteres que no sean BMP, intercalación, comparación, métodos de entrada, instrucciones para escribir. Los administradores pueden no tener el conocimiento suficiente para manejarlos. Dependiendo de la naturaleza del sitio web, podría ser un problema, pero la mayoría no.

Para fines administrativos, no es fácil escribir algunos caracteres exóticos. Hace que el administrador sea difícil de buscar usuarios. También es difícil para un administrador mantener los nombres de usuario ofensivos en idiomas extranjeros fuera del sitio web.

Sin embargo, no es raro que los nombres de usuario chinos se utilicen en el sitio web chino. Puede que no siempre esté en ASCII. También lo hacen otras culturas e idiomas. Algunos proyectos globales aceptan casi todos los tipos de caracteres Unicode. Wikipedia es un ejemplo.


Yo diría que una gran razón es la falta de soporte para Unicode en la mayoría de las instalaciones de PHP. No es fácil trabajar con él, entonces, ¿por qué permitirlo cuando las posibilidades en ASCII son suficientes para cubrir toda la base de usuarios?


El simple ASCII es raro, diría yo. A menudo es solo que nadie piensa en ello, ya que en Europa occidental es suficiente el latín 1 y también para los EE. UU. Algunas bases de datos establecen distinciones entre el texto en conjuntos de caracteres heredados y Unicode ( varchar vs. nvarchar ) o para otras bases de datos se debe establecer un juego de caracteres especial.

Especialmente en los Estados Unidos muchas personas ni siquiera notan que ASCII no será suficiente. Algunos intentan encontrar excusas con "Los usuarios tienen que ingresarlo" o similares, que en su mayoría son falsos.

Para responder a su pregunta, dudo que haya consideraciones de seguridad, excepto tal vez para suplantar los nombres de otras personas usando diferentes guiones (una y una apariencia idéntica, pero una es latina, una es cirílica, esto ya se hizo con las URL). En general, lo veo como un descuido de los desarrolladores que probablemente deberían saberlo mejor.


Homoglyph ataca. El usuario ''cat'' y ''сat'' son cadenas de Unicode diferentes aunque tienen el mismo aspecto. La primera letra en el segundo ''сat'' es en ruso ''с'' - "CYRILLIC SMALL LETTER ES" para ser exactos. El sistema no puede decir fácilmente que está falsificando el nombre de otro usuario; para la computadora, las mellas son diferentes.

Editar: La prevención de secuencias de comandos mixtas no resuelve el problema. Por ejemplo, ''сосо'' es puro Cyryllic y puede usarse para suplantar ascii ''coco''.

Además, anulación de izquierda a derecha (y amigos). Déjelos sin sanitizar y arruinarán toda su página.