Supongamos que hago lo siguiente:¿Qué tan peligroso es proporcionar un medio para que el público ejecute consultas SELECT en una base de datos?
- puedo crear una base de datos MySQL, y rellenarla con algunos datos.
- Creo un usuario de MySQL que solo tiene acceso a esa base de datos y que solo tiene privilegios SELECT.
- Creo una página web a través de la cual un usuario (cualquier usuario, sin contraseña) puede ingresar SQL arbitrario, y al enviar el formulario, un script intenta ejecutar el SQL como el usuario de MySQL que creé; cualquier conjunto de resultados generado se muestra al usuario; cualquier mensaje de error generado se muestra al usuario.
- Supongamos que la base de datos no contiene procedimientos almacenados, etc., solo tablas y vistas, y que me complace que cualquiera pueda ver el contenido de esa base de datos específica.
Suponemos que la configuración será probada por un usuario malintencionado. ¿Qué es lo peor que podría pasar?
Algunos pensamientos:
- MySQL proporciona diversas declaraciones como la demostración etc., que un usuario ni siquiera tener sólo privilegios de SELECT podrían utilizar para recopilar información sobre el servidor de base de datos o de mis bases de datos. Se puede obtener otra información de los mensajes de error. Aunque probablemente no sea suficiente para obtener acceso inapropiado, esta información seguramente podría ayudar a hacerlo.
- Puede haber fallas en el software de la base de datos, o en mis scripts, o en el lenguaje de scripting en sí, que podrían permitirle a un visitante hacer cosas que no deberían poder hacer a través de esta interfaz.
- Hacer esto podría violar un acuerdo de términos de servicio, especialmente si estoy usando alojamiento compartido.
Yo estaba muy tentado de agregar la etiqueta "Sony" a esta pregunta :) –
5 votos! Debería hacer más preguntas tontas. – Hammerite
Prefiero decir "si recibes 5 votos por una pregunta estúpida, imagínate lo que puedes obtener para obtener información" :) –