La verdadera pregunta es, ¿es seguro dejar que el usuario decida parte de la consulta.
Incluso en un caso simple, proporcionar datos de usuario a la base de datos es inseguro.
Permitir que los usuarios de entrada a ser enviada directamente a la base de datos pueden ser peligrosos, pero por lo que su filtro y usar su estrategia de escape base de datos (es decir: mysql_real_escape_string()
(declaraciones bien preparados o cualquier ORM lo hará por usted) debe sea lo suficientemente seguro.
Sin embargo, puede conducir a problemas de rendimiento, un simple EXPLAIN
en su consulta debe advertirle de la cantidad de filas son analizados por su motor de RDBMS.
La mejor manera de implementar estas características es de use Search Engine. (¿No es lo que está tratando de hacer?)
Hay muchas opciones disponibles para ayudarlo a implementar esto.
Puede echar un vistazo a Sphinx, Solr, Xapian o incluso Lucene. Hay todas excelentes opciones.
Básicamente le permiten "indexar" su contenido para realizar búsquedas de texto completo mientras aumenta el rendimiento.
También pueden dar algunas funcionalidades increíbles como OR
, AND
, LIKE
, MINUS
, etc. comparadores/operadores.
A continuación, puede estar interesado en esta pregunta: Choosing a stand-alone full-text search server: Sphinx or SOLR?
nos muestras una consulta de ejemplo de lo que se propone? Establecería un límite de tiempo para las búsquedas de los usuarios, para evitar que golpeen demasiado sus servidores. – Brad
Quizás su aplicación estaría mejor servida mediante la integración de un motor de búsqueda como Lucene. –