Tengo una tabla en una base de datos (Mysql) que contiene un campo que almacena cadenas sql en ella. Me refiero a las consultas completas como texto (seleccionar siempre las declaraciones). Modificar una de esas consultas es un "dolor en el culo" porque primero se necesita conectarse a un vpn, luego acceder a la base de datos y, finalmente, modificar el campo con algún software como Mysql Workbench o cualquier otro.
Estoy desarrollando en un sitio web un panel de control al que solo pueden acceder los administradores del sitio. En ese panel de control, estoy pensando en crear un formulario para modificar ese campo sql. Puede hacer que la vida de los administradores sea más fácil de gestionar.
Por lo general, soy muy consciente de ser cuidadoso con las inyecciones de SQL en todas mis formas, solicitudes GET y POST, etc. Sé que esto puede ser peligroso, incluso ser un panel restringido solo para administradores.
La primera pregunta es : si finalmente decido crearla y un usuario administrador queda bajo el control de un pirata informático, ¿qué tan malo sería para mí? ¿Existe la posibilidad de "controlar" las sentencias de SQL que se almacenarán para permitir solo las sentencias de selección?
Sé que algunas técnicas básicas como reemplazar algunas palabras reservadas peligrosas por nada, como DROP, por ejemplo, son inútiles ... los hackers pueden usar trucos simples como DRDROPOP
que, después de reemplazar, obtienen DROP
de todos modos y ese tipo de trucos sucios ... o tal vez pueden ofuscante los sqls usando Unicode, etc ...
Segunda pregunta : ¿Existe alguna buena guía para tratar de controlar y filtrar tanto como sea posible los "trucos" de sql o es inútil porque SIEMPRE hay un método para penetrar lanzando otros "no seleccionados" declaraciones?