¿Es peligroso dejar que el usuario ingrese en una declaración LIKE sql?

0

Suponiendo que quiero implementar un motor de búsqueda, es peligroso dejar que el usuario ingrese a LIKE . Por ejemplo:

SELECT user FROM table WHERE user LIKE "[user input]"

En este caso, asumo que el usuario podrá escribir caracteres como % , _ También asumimos que evitamos adecuadamente los caracteres de inyección como " , ' , '

Estoy pensando en un posible Mysql DDOS si la base de datos contiene una gran cantidad de usuarios. ¿Hay otros riesgos?

    
pregunta Xavier59 03.08.2016 - 00:35
fuente

1 respuesta

4

El riesgo no es diferente a aceptar la entrada del usuario para una evaluación regular. Aún debe desinfectar los datos y utilizar prácticas seguras, como procedimientos almacenados.

El problema único con LIKE entra en juego cuando se usa, pero no debería. Por ejemplo, su aplicación quiere recuperar algo con un ID determinado, pero usar LIKE podría devolver un ID similar pero diferente. Uno que no regresaría a su usuario final. Pero esto no es un problema que debas tener con un motor de búsqueda.

En una nota adicional, usar LIKE con MySQL te dará un motor de búsqueda muy básico y limitado que no se adapta bien. Para alternativas, considere hacer coincidir contra columnas de búsqueda de texto completo o usar algo para el trabajo como Lucene, Sphinx , Elasticsearch, Solr.

    
respondido por el Bacon Brad 03.08.2016 - 01:28
fuente

Lea otras preguntas en las etiquetas