Injecția SQL. Injecție SQL bazată pe declarații SQL Batched.

Injecție SQL bazată pe declarații SQL Batched (SQL Injection Based on Batched SQL Statements)

Majoritatea bazelor de date acceptă declarația SQL batched.

Un batch (lot) de instrucțiuni SQL este un grup de două sau mai multe instrucțiuni SQL, separate prin punct și virgulă.

Instrucțiunea SQL de mai jos va returna toate rândurile din tabelul „Utilizatori” (Users), apoi va șterge tabelul „Furnizori” (Suppliers).

Exemplu:
 
SELECT * FROM Users; DROP TABLE Suppliers

Priviți următorul exemplu:

Exemplu:
 
txtUserId = getRequestString("UserId");
txtSQL = "SELECT * FROM Users WHERE UserId = " + txtUserId;

Și următoarea intrare:

User id: 105; DROP TABLE Suppliers

Instrucțiunea SQL validă ar arăta astfel:

Rezultat:
 
SELECT * FROM Users WHERE UserId = 105; DROP TABLE Suppliers;