DIFERENCIANDO MINUSCULAS/MAYUSCULAS EN UNA CONSULTA

Es un hechizo simple pero inquebrantable.

Dr. Strange

 

Apenas nos dimos cuenta de este pequeño/gran fallo en nuestra aplicación y como hormigas con gasolina nos pusimos a crear el parche. Esto es aplicable a bases de datos MariaDB y Mysql

En que consiste el Bug. Pues nada más y nada menos que en el Login. A la hora de entrar a ALUX. Pues bien al parecer a la hora de validar nuestras credenciales. EL usuario no es sensitivo a minúsculas y mayúsculas. Lo que quiere decir es que le vale madres si se escribe JUAN , Juan ó JuaN. Para la validación es lo mismo.

Esto es un problema porque con que alguien sepa su usuario y quiere hacer un ataque a fuerza bruta, el tiempo del ataque se reduce bastante y nuestro sistema está expuesto.  Nosotros creíamos que era pedo de que las pruebas las hacíamos en Windows o Linux. O una configuración de Mysql. Como su colección  utf8_binary vs utf8_Ci. Pero si es changa o es juana vamos a dar una solución rápida.

Solución

Nosotros tenemos el siguiente info en la tabla :

| id | user | password | active |

------------------------------------------------

1        juan   $!1312ª12      1

 

Actualmente la query que hace la consulta es esta :

SELECT  `user`, `passwords` FROM `system_users` WHERE `user` = 'Juan' ORDER BY `id`

 

El resultado es

 juan  -  $!1312ª12

 

Y esto es erroneno

Asi que vamos a modificar nuestro query y vamos a gregar lo siguiente.

SELECT  `user`, `passwords` FROM `system_users` WHERE BINARY `user` = 'Juan' ORDER BY `id` DESC LIMIT 1

 

El resultado

0

Y esto es correcto.

La solución es utilizar el modificador BINARY

La respuesta es la siguiente  «secuencia de ordenación» (‘collation sequence’) y es que en mysql, se define una ‘secuencia de ordenación’ por defecto para todo el servidor y en su caso tenga una que ignore las minúsculas y mayúsculas «conjunto de caracteres» y esto puede configurarse a nivel de nivel de sistema, base de datos, tabla o campo.

 

Bueno espero que les ayude este pequeño hechizo inquebrantable. y nos vemos para la proxima.

 

Lecturas recomendadas

https://blog.openalfa.com/como-hacer-una-busqueda-diferenciando-mayusculas-de-minusculas-en-sql

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *