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:
Priviți următorul exemplu:
Exemplu:
Și următoarea intrare:
User id: 105; DROP TABLE Suppliers
Instrucțiunea SQL validă ar arăta astfel:
Rezultat:
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;