sql >> Base de Datos >  >> RDS >> Mysql

Exponer el nombre de la tabla y los nombres de campo en la URL de solicitud

No tengo ningún problema con usar los mismos nombres (o muy similares) en la URL y la base de datos; claro, es posible que esté "exponiendo" detalles de implementación, pero si está eligiendo nombres radicalmente diferentes en la URL y la base de datos, Probablemente esté eligiendo malos nombres. También soy un fanático de la nomenclatura consistente:la comunicación con los codificadores/evaluadores/clientes se vuelve mucho más difícil si todos llaman a todo algo ligeramente diferente.

Lo que me molesta es que está permitiendo que el usuario ejecute consultas arbitrarias en su base de datos. http://.../index.php?table=users&user_id=1 , ¿decir? O http://.../index.php?table=users&password=password (no es que debas almacenar contraseñas en texto sin formato)? O http://.../index.php?table=users&age=11 ?

Si el usuario conectado a la base de datos tiene los mismos permisos que el usuario sentado frente al navegador web, podría tener sentido. En general, ese no será el caso, por lo que necesitará alguna capa que sepa qué es el usuario y qué no puede ver, y esa capa es mucho más fácil de escribir correctamente mediante la lista blanca.

(Si ha incluido suficiente lógica en los procedimientos almacenados, entonces podría funcionar, pero luego sus procedimientos almacenados codificarán los nombres de las columnas...)