Introducerea sql-cod - este

Introducerea SQL-cod (injecție SQL limba engleză.) - una dintre cele mai comune modalități de a hack site-uri și programe. lucrul cu baze de date. bazat pe introducerea unui cod SQL arbitrar cerere.

injecție SQL, în funcție de tipul de baze de date și introducerea unor condiții poate permite unui atacator să execute interogare arbitrare la baza de date (de exemplu, pentru a citi conținutul de la orice masă. Eliminați, modifica sau adăuga date) să fie capabil să citească și / sau scrie fișiere locale și executa comenzi arbitrare de pe serverul destinație.

SQL punerea în aplicare tip de atac poate fi posibil datorită prelucrării incorecte a datelor de intrare utilizate în SQL-interogare.

Înscrieri¶, lucrul cu baze de date, ar trebui să fie conștienți de aceste vulnerabilități și să ia contramăsuri punerea în aplicare SQL.

injecție SQL atacă principiul

Să presupunem că software-ul de server. a primit parametru de intrare id-ul, se folosește pentru a crea o interogare SQL-. Luați în considerare următoarele PHP -script:

Astfel, modificarea parametrilor de intrare prin adăugarea lor la constructele limbajului SQL determină o schimbare în logica SQL-interogare (în acest exemplu, în loc de știri, cu toate identificatorul specificat stocate în baza de date va fi ales de știri, pentru că expresia 1 = 1 este întotdeauna adevărat).

Introducerea parametrilor string

software de tip server Presupunem că primește o cerere de recuperare a datelor în opțiunea de știri SEARCH_TEXT, utilizați-l în următoarea SQL-interogare (parametrii scăpat citate aici):

Dar, prin introducerea unui parametru în caracter text_căutare citat (care este utilizat în interogare), putem schimba radical comportamentul SQL-interogare. De exemplu, trecerea ca valoare a parametrului text_căutare „) + și (news_id_author =“ 1 vom suna pentru a efectua o cerere .:

Utilizarea UNION

limbaj SQL vă permite să combinați rezultatele interogări multiple folosind operatorul UNION. Acest lucru oferă un atacator pentru a obține acces neautorizat la date.

Luați în considerare afișarea script-ul de știri (știri ID-ul pe care doriți să afișați este transmis la parametrul ID):

În cazul în care un atacator trece ca un design parametru id -1 UNION SELECT 1, numele de utilizator, parola, 1 din admin. aceasta va provoca SQL-interogare

Deoarece identificator de știri -1, evident, nu există, tabelul de știri este selectat înregistrare audio, dar va scădea în înregistrările rezultate neautorizate selectate din tabelul de administrare rezultată prin injecție SQL.

Folosind UNION + group_concat ()

În unele cazuri, un atacator poate monta un atac, dar nu a putut vedea mai mult de o coloană. În cazul MySQL atacator poate folosi funcția:

care reunește mai multe coloane într-una singură. De exemplu, pentru un exemplu al apelului funcției de mai sus este:

Ecranarea interogare coadă

De multe ori, SQL-interogare afectate de această vulnerabilitate, are o structură care complică sau împiedică utilizarea uniunii. De exemplu, script-

În acest exemplu, un atacator poate transmite un script cu o valoare a parametrului id -1 parola UNION SELECT FROM admin / *. îndeplinind astfel o cerere

Divizarea SQL-interogare

Pentru a separa comenzile în limba SQL utilizată de caracterul; (Punct și virgulă), introducând caracterul în cerere, un atacator este capabil să execute mai multe comenzi într-o singură interogare, dar nu toate dialectele SQL acceptă această caracteristică. MySQL, de exemplu, nu are suport.

De exemplu, în cazul în care parametrii de script-ul

Acesta este transmis printr-o structură care cuprinde un punct și virgulă, de exemplu 12; INSERT INTO admin (nume de utilizator, parola) VALUES ( 'HACKER', 'foo'); cele 2 echipe vor fi executate într-o singură interogare

iar masa va admin ilegal adăugat înregistrare Hacker.

Metode de tip implementare de atac SQL-cod

Căutare script-uri sunt vulnerabile la atacuri

În acest moment, atacatorul studiază comportamentul script-urile de server pentru parametrii de intrare de manipulare pentru detectarea comportamentului aberant. Manipularea are loc în toți parametrii posibili:

  • Datele transmise prin intermediul POST și GET metode
  • Valorile [HTTP-Cookie]
  • HTTP_REFERER (pentru script-uri)
  • AUTH_USER și AUTH_PASSWORD (folosind autentificare)

Ca o regulă, manipularea se ridică la înlocuirea parametrilor unui singur caracter (uneori dublu sau invers) citate.

Comportamentul anormal este orice comportament în care pagini primite înainte și după citate de substituție, diferite (și nu sunt afișate pe pagina este format parametru greșit).

Cele mai frecvente exemple de comportament anormal:

  • un mesaj este afișat pe diferitele erori;
  • atunci când (de exemplu, știri sau lista de produse) datele solicitate nu apare deloc, deși este afișată o cerere de date pagina

și așa mai departe. d. Rețineți că există cazuri în care mesajele de eroare din cauza aspectului specific pagina nu este vizibil în browser-ul, chiar dacă acestea sunt prezente în HTML sa-cod.

În acest caz, câmpul ID-ul este un tip numeric, și de multe ori nu iau în ghilimele. Prin urmare, „citând“ și înlocuirea de caractere speciale de evacuare-secvențe nu trece. În acest caz, verificați tipul de ajutor; ID-ul în cazul în care variabila nu este un număr, cererea ar trebui să nu fie efectuată deloc.

De exemplu, în Delphi pentru a contracara astfel de preparate injectabile ajută Cod:

În caz de eroare funcției StrToInt EConvertError va provoca o excepție. și puteți afișa un mesaj de eroare la handler său. conversie dublă oferă răspunsul corect la numărul în formatul $ 132AB (sistem de număr hexazecimal). Pe un standard de Pascal, care nu se pot ocupa de excepție, codul este un pic mai complicat.

Pentru PHP, această metodă ar arata astfel:

Trunchierea parametrilor de intrare

Pentru a face modificări în logica apelurilor SQL-interogare pentru introducerea unor șiruri suficient de lungi. Astfel, lungimea minimă a șirului implementat în exemplele de mai sus este de 8 caractere ( „1 OR 1 = 1“). În cazul în care lungimea maximă a parametrului valoarea corectă este scăzută, una dintre metodele de protecție pot fi trunchierea maximă a valorilor parametrilor de intrare.

De exemplu, dacă știți că câmpul ID din exemplul de mai sus poate fi setat pentru a nu mai mult de 9.999, puteți „tăia extra“ caractere, lăsând nu mai mult de patru:

Utilizarea interogări parametrizate

Multe servere de baze de date sprijină posibilitatea de a trimite interogări parametrizate (situațiile financiare întocmite). Parametrii de origine externă sunt trimise la server separat de cererea sau automat protejate de către biblioteca de client. În acest scop,

  • în Perl - să ia prin DBI :: citat sau DBI :: pregătesc;
  • pe Java - prin clasa PreparedStatement;
  • la C # - SqlCommand.Parameters proprietate;
  • pe PHP - MySQLi (atunci când se utilizează MySQL), DOP.
  • pe Parser - limbajul în sine împiedică acest tip de atac [sursa care nu este specificat 595 zile].

Acest articol lipsesc referințele bibliografice la sursele de informații.

Vezi ce „Implementarea SQL-cod“ în alte dicționare:

SQL-injecție - injecție SQL (. Engleză SQL Injection) Una dintre cele mai comune modalități de a hack site-uri și programe, care lucrează cu baze de date, pe baza introducerea unei interogări SQL arbitrar, în funcție de tipul de baze de date și introducerea de condiții, ... ... Wikipedia

SQL injecție - injecție SQL (. Engleză SQL Injection) Una dintre cele mai comune modalități de a hack site-uri și programe, care lucrează cu baze de date, bazate pe introducerea unei interogări SQL arbitrar, în funcție de tipul de baze de date și introducerea de condiții, ... ... Wikipedia

SQL injecție - injecție SQL (. Engleză SQL Injection) Una dintre cele mai comune modalități de a hack site-uri și programe, care lucrează cu baze de date, bazate pe introducerea unei interogări SQL arbitrar, în funcție de tipul de baze de date și introducerea de condiții, ... ... Wikipedia

SQL Injection - (. Engleză SQL injecție) injecție SQL este una dintre cele mai comune modalități de a hack site-uri și programe, care lucrează cu baze de date, pe baza introducerea unei interogări SQL arbitrar, în funcție de tipul de baze de date și introducerea de condiții, ... ... Wikipedia

Microsoft SQL Server - Tip RDBMS Sybase Developer, Ashton Tate, Microsoft ... Wikipedia

Procedură stocată - stocată obiectul bază de date procedură care reprezintă un set de instrucțiuni SQL care este compilat o dată și stocate pe server. Procedurile stocate sunt foarte asemănătoare cu procedura ordinară, un limbaj de nivel înalt, ele pot fi ... ... Wikipedia

atac de hacker - în sensul strict al cuvântului în prezent în fraza se referă la „Atacul asupra sistemului de securitate“, și înclină mai mult în sensul următorilor termeni Krekerskaya atacului. Acest lucru sa datorat distorsiunea sensul cuvântului „hacker“. Hacker ... ... Wikipedia

  • Introducerea SQL-cod. Dzhessi Rassel. Această carte va fi făcută în conformitate cu comanda pe tehnologia de imprimare Tehnologie-on-Demand. Conținutul de calitate înaltă prin articole wikipedia! Introducerea SQL-cod (injecție SQL limba engleză.) - unul din ... Citește mai mult Buy pentru 1.125 de ruble