2009-02-12 638 views
8

Estoy buscando algún código que convierta nombres de usuario a minúsculas, antes de almacenarlos. Estoy 90% seguro de que esto está bien, pero ¿hay sistemas que realmente requieran sensibilidad de mayúsculas y minúsculas en los nombres de usuario (específicamente en la industria de la salud)?¿Los nombres de usuario siempre distinguen entre mayúsculas y minúsculas?

Nota: mi código particular no está en el punto de entrada. Estamos tomando nombres de usuario de otros sistemas. La preocupación que tengo depende de esos sistemas (que pueden o no estar bajo nuestro control) para pasar constantemente nombres de usuario en el mismo caso que el otro (cuando se describe al mismo usuario).

También de la nota - el código es:

userName.toLowerCase(Locale.ENGLISH) 

Son todos los nombres de usuario en Inglés? ¿Es esto solo para que coincida con la intercalación en la base de datos? Tenga en cuenta que (en Java al menos) String.toLowerCase() se define como String.toLowerCase(Locale.getDefault())

Respuesta

0

Si su único objetivo es diferenciar a un usuario de otro, parece lógico que desee que más que el caso sea un factor.

21

inicios de sesión UNIX son sensibles ...

¿Hay otros sistemas que hacen esto?

+1

¿Alguien me puede decir por qué esto se está rebajando? No es una respuesta específica en mi caso, pero pensé que sería útil para otros. ¿Lo que da? – Stephen

+2

Odio drive-by votos abajo. Lamentablemente, suceden. –

+0

Bueno, esto responde exactamente a lo que se pidió. Señala un caso en el que los nombres de los usuarios distinguen entre mayúsculas y minúsculas. Yo voté a favor esto –

0

Nunca he encontrado un sistema que aplica sensibilidad a mayúsculas y minúsculas en los nombres de usuario (ni me gustaría tenerlo).

Lo más probable es que el código los fuerce en minúscula en el punto de entrada como un intento de evitar problemas de sensibilidad de mayúsculas más adelante.

+0

He editado para tener en cuenta que nuestro sistema no es el que proporciona acceso. – Stephen

+0

'Los nombres de usuario de Wikipedia distinguen entre mayúsculas y minúsculas, pero la primera letra siempre se escribe en mayúscula automáticamente' tomada de https://en.wikipedia.org/wiki/Wikipedia:Username_policy – Jakob

+0

Mientras que los nombres de usuario de Wikimedia/Wikipedia/MediaWiki distinguen entre mayúsculas y minúsculas, el software impide dos nombres de usuario que difieren solo por mayúsculas. –

2

La minúscula del nombre de usuario que utiliza la configuración regional en inglés puede causarle problemas. Sugeriría la minoría utilizando la cultura invariante.

+0

En Java, esto sería Locale.ROOT – Stephen

+0

La cultura invariable en .NET es en inglés localidad de todos modos. – Joshua

+3

@Joshua: este es un detalle de implementación interna en el que no debe confiar. –

6

toLowerCase sólo tiene una razón para que acepte un local:

desde pequeña letra i tiene un punto en cada lengua estándar, la letra I se transforma en una i con un punto.

pero en turco, también hay una letra mayúscula İ con un punto encima. esto se transforma en una letra pequeña i.

la capital turca "regular" I se transforma en una pequeña ı - sin un punto.

así que, a menos que sus nombres de usuario turcos se llamen IiI1I1iiII, no me preocuparía por esto.

en cualquier otro idioma que el turco tenga una instancia idéntica de LowCase. para que puedas elegir Locale.ENGLISH o Locale.GERMAN o lo que sea ... solo asegúrate de no elegir turco.

ver la javadoc for more detailed information

Edit: Gracias a UTKU karatas que podría/copiar pegar los glifos correctas en THS puesto.

+0

¿Tienes un problema con el turco? De todas formas, no hay razón para ser perezoso, cuando se usa una configuración regional invariante es todo el trabajo requerido para admitir a unos pocos millones de usuarios potenciales. –

+1

Sin teclado turco Andreas? :) Déjame ilustrar el problema ... más bajo ("I") = "ı", más bajo ("İ") -> "i". –

+0

Y, por cierto, Jeff tiene una publicación larga sobre este tema .. http://www.codinghorror.com/blog/archives/001075.html –

0

Depende del contexto, pero en el dialecto de Informix de SQL, hay 'propietarios' (básicamente equivalentes a un esquema en SQL estándar), y cómo se escribe el nombre del propietario.

SELECT * 
    FROM someone.sometable, "someone".sometable, 
     SOMEONE.sometable, "SOMEONE".sometable 

Los dos nombres citados son definitivamente diferentes; los dos nombres para unir son mapeados con el mismo nombre, que (dependiendo del modo de base de datos) podría ser cualquiera de los otros dos. Hay un código alrededor del cual se realiza la conversión de casos en los nombres (sin comillas). Afortunadamente, la mayoría de las veces no necesita especificar el nombre, y cuando lo hace, escribe el nombre sin comillas y todo funciona; o escribes el nombre con comillas y son consistentes y todo funciona. Ocasionalmente, sin embargo, la gente como yo tiene que entender realmente los detalles para que los programas funcionen correctamente a pesar de todos los inconvenientes.

Además, (como señaló Stephen), los inicios de sesión de Unix distinguen entre mayúsculas y minúsculas, y siempre lo han sido. Creo que los inicios de sesión de Windows son, en su mayoría, insensibles a las mayúsculas y minúsculas, pero no experimento con eso (hay demasiadas formas de confundirse en Windows sin agregar ese tipo de trucos al juego).

Si realmente desea confundir a alguien en Unix, asígneles un nombre de usuario numérico (por ejemplo, 123) pero asígneles un UID diferente (por ejemplo, 234).

1

Kerberos, que también se puede usar en entornos Windows, tiene problemas de sensibilidad de mayúsculas y minúsculas. Puede configurarlo de cierta manera para asegurarse de que no surjan problemas de sensibilidad entre mayúsculas y minúsculas, pero puede ir en la otra dirección también.

3

El uso de mayúsculas y minúsculas de usuario/contraseñas es una manera fácil de aumentar la seguridad, por lo que la pregunta es, ¿cuánto le importa la seguridad frente a la usabilidad? Solo tenga en cuenta que la forma en que está buscando resolver la insensibilidad de las mayúsculas/minúsculas puede tener algunos problemas de localización, pero si no le importa, no se preocupe.

Cuestiones relacionadas