Consulta SQL como entrada de usuario usando textarea

Me gustaría darle a un usuario la opción de realizar consultas SQL. Coloqué un área de texto en el formulario usado. Cuando entré a esta consulta SELECT name FROM user ORDER BY name ASC , devolvió el resultado esperado. Pero cuando intenté usar la cláusula WHERE SELECT name FROM user WHERE SUBSTRING(name, 1, 1) = 'J' ORDER BY name ASC or SELECT name FROM user WHERE id>1000 ORDER BY name ASC, ninguno de los SELECT funcionó y recibí el siguiente error:

No aceptable No se pudo encontrar una representación adecuada del recurso solicitado /test/index.php en este servidor. Además, se encontró un error 404 No encontrado al intentar usar un ErrorDocument para manejar la solicitud.

¿Cuál puede ser la causa de este problema? Lo primero que me vino a la mente fue que caracteres como> invalidarán la URL, pero no es el caso.

preguntado el 08 de noviembre de 11 a las 17:11

¿Cómo está transmitiendo la información de la página web a su aplicación? PUBLICAR o OBTENER? Publique el HTML para el botón ENVIAR (si está enviando un formulario). -

Y también, si su empresa alguna vez ha recopilado datos sobre mí, ¿puedo pedirle respetuosamente que los elimine inmediatamente de su base de datos? -

Aparte de los peligros obvios de permitir que los usuarios ingresen SQL de forma libre, ¿cómo está publicando esto en el servidor? Puede que necesite utilizar stripslashes antes de intentar ejecutar el SQL. -

Considere lo que podría suceder si enviara "drop table user" o "update user set name = concat (name, 'is pedobear aprobado')" -

@horatio, no pasaría nada ya que el usuario solo puede ejecutar consultas SELECT -

2 Respuestas

Algún software excesivamente cauteloso como Suhosin o mod_security o similares, creo.

respondido 08 nov., 11:21

Es probable que su servidor web esté configurado con mod_security y esté escaneando datos POST, lo que activa esta respuesta.

Ver: http://www.howtoforge.com/apache_mod_security_p2

http://www.modsecurity.org/documentation/modsecurity-apache/1.9.3/html-multipage/03-configuration.html#N10176

respondido 08 nov., 11:21

El for usa el método GET. "Publique el HTML para el botón ENVIAR" "Y también, si su empresa alguna vez ha recopilado algún dato sobre mí, ¿puedo pedirle respetuosamente que lo elimine inmediatamente de su base de datos?" Es una broma :) Si no, puedo asegurarle que no hay datos sobre usted mysql_query (stripslashes ($ _ GET ['sql'])) es como se ve el comando - user965748

@ user965748, es una broma. O más bien, una advertencia sobre permitir el envío directo de código SQL a una base de datos con cualquier dato importante, significativo o de identificación personal; debe asumir que cualquier persona en Internet podrá hacer lo que quiera con su base de datos. - Larry Lustig

@Larry Lustig no hay problema, la página está en un área no pública, por lo que solo las personas seleccionadas tienen acceso allí. - user965748

debe responder a los comentarios en los hilos en los que ocurren (arriba) - Horacio

@horatio OK, lo haré. Parece que la verdadera razón por la que no funciona tiene que ver con los personajes, porque incluso se permitió NATURAL JOIN. - user965748

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.