Sí, según la seguridad de la base de datos subyacente, un solo ataque de Inyección de SQL puede afectar a otras tablas en la misma base de datos e incluso a tablas en diferentes bases de datos o en casos muy específicos, tablas que se ejecutan en diferentes instancias de bases de datos.
Incluso es posible actualizar / leer desde varias tablas a la vez usando una sola consulta de base de datos. Ya que has etiquetado tu pregunta como mysql, aquí hay una consulta de MySQL para actualizar varias tablas:
UPDATE Books, Orders
SET Orders.Quantity=Orders.Quantity+2,
Books.InStock=Books.InStock-2
WHERE Books.BookID=Orders.BookID
AND Orders.OrderID = 1002;
La lectura es tan simple como usar una ÚNETE:
SELECT t1.name, t2.otherColumn
FROM Table1 as t1
LEFT JOIN Table2 as t2
ON t1.id = t2.id
Obviamente, la efectividad de estas consultas dependerá de la estructura de la tabla subyacente, pero es absolutamente posible leer tablas múltiples o involuntarias utilizando la inyección SQL.
Un ejemplo de cuándo esto no sería posible es si las tablas en cuestión pertenecen a esquemas diferentes, cada uno con una cuenta específica a la que se puede acceder. Ejemplo:
app1.ImportantTable
app2.OtherTable
app3.BigTable
Si cada uno de estos esquemas está configurado para permitir solo el acceso de un usuario diferente, entonces no puede haber acceso no deseado. Por lo tanto, si hay una configuración App1User
en la base de datos que solo puede leer / modificar el esquema app1
, no podrá seleccionar datos de las tablas en el esquema app2
.