2012-07-30 53 views
6

Me preguntaba en caso de operación de selección normal la búsqueda es inseparable de mayúsculas y minúsculas. Así SELECT * FROM tbl WHERE name = aBc considerará también el nombre con los valores de ABC, ABC, ABC, etc.Si MYSQL no distingue entre mayúsculas y minúsculas, ¿cómo funciona para el campo Contraseña en Iniciar sesión?

pero en el caso de la función de inicio de sesión sólo hacemos SELECT * FROM tbl WHERE password = aBc habrá mayúsculas y minúsculas y sólo tienen en cuenta el valor de contraseña con ABC.

¿Cómo sucede esto? No encontré nada sobre esto en mis búsquedas.

Por favor, explícamelo.

Gracias All.

+0

Si guarda las contraseñas como hashes, no importará. Y así es como deberías hacerlo. –

+0

guardando la contraseña como texto sin formato? ... eso fue bueno – Zaffy

+0

No @quarry no es que solo me preguntaba cómo funciona eso? –

Respuesta

5

Creo que depende de la recopilación de columnas, la recopilación de bases de datos por defecto en MySQL utf8_general_ci donde ci al final no distingue entre mayúsculas y minúsculas.

las contraseñas sensibles a las mayúsculas y minúsculas solo funcionarán si está almacenando contraseñas en formato cifrado utilizando la función MD5 o PASSWORD.

show variables like '%collation%'; 
+---------------------------+-------------------+ 
| Variable_name    | Value    | 
+---------------------------+-------------------+ 
| collation_connection  | latin1_swedish_ci | 
| collation_database  | utf8_general_ci | 
| collation_server   | latin1_swedish_ci | 
+---------------------------+-------------------+ 
+0

pero aún se comporta como Case Sensitive incluso si no he cifrado las contraseñas en hash. –

+0

Thanx @Omesh Creo que eso lo explica muy bien y se adapta a mis casos de prueba. –

+0

¡De nada! :) – Omesh

1

no estoy seguro de cuál es la respuesta a su pregunta es exacta, sin embargo, si usted está almacenando contraseñas en una base de datos como texto, entonces eso es una muy mala idea. Lo que debe hacer en su lugar es utilizar la contraseña al registrarla y almacenarla en su base de datos en ese formulario. Luego, cada vez que un usuario intenta iniciar sesión, reajusta la contraseña enviada y la compara con el hash almacenado en la fila con el nombre de usuario correspondiente. Dado que el hash ES distingue entre mayúsculas y minúsculas, esto resuelve su problema al tiempo que agrega un nivel de seguridad muy necesario.

1

En muchas implementaciones, las contraseñas o sus valores hash se comparan en el servidor de aplicaciones, por lo que el problema no aparece.

1

para su uso entre mayúsculas y minúsculas (BINARIO)

SELECT * FROM TBL DONDE BINARIO password = aBc

+0

Eso es correcto, pero esa no era mi pregunta gracias a @KSA. –

3

$ sql = "SELECT * FROM usuarios donde nombre de usuario = '$ nombre de usuario' Y BINARIO contraseña = '$ contraseña' ";

Cuestiones relacionadas