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
Soy Juan Luis García Corrales, mi nombre de guerra es monolinux. Vivo en Villagrán ,Guanajuato. Cofundador de jungla
ISC orgullosamente LINCE. Apasionado del arte , Crítico de las Películas , Musica y Libros , Escribo en tiempo libres y ♥ Regina
Mi estilo de vida es la programación así que trato de sincronizarlo con mi vida diaria, predicó la filosofía Gnu/Linux para brindar opciones menos capitalistas.
– Viviendo en la armonía del caos