Ce este SQL Injection?

SQL Injection este o tehnică de injecție de cod folosită pentru a ataca aplicațiile bazate pe date prin inserarea instrucțiunilor SQL răuvoitoare în câmpul de execuție. Baza de date este o parte vitală a oricărei organizații. Acest lucru este gestionat de securitate la nivel înalt într-o organizație. Să învățăm mai întâi ce este SQL.

Ce este SQL?

SQL este un limbaj de interogare structurat. Folosit pentru a interacționa și pentru a manipula baza de date.

Ce face SQL exact?

  • Creați o bază de date nouă.
  • Inserați, actualizați, ștergeți înregistrările.
  • Creați interogări noi.
  • Proceduri stocate.
  • Creați vizualizări.
  • Executați interogări.
  • Setați permisiunile.

Injecția SQL este una dintre principalele amenințări la adresa securității. Aceasta intră sub criminalitate cibernetică.

În SQL avem un concept numit SQL Injection. Această tehnică este utilizată pentru a injecta codul. SQLi (injecția SQL este cunoscută și ca un tip de hacking, adică atac de injecție.) Este cunoscută și sub denumirea de tehnică de hacking web.

Această injecție injectează codul rău intenționat în baza de date, oferind introducere la o pagină web. Aceste intrări au anumite condiții, care sunt întotdeauna adevărate. Cu aceste condiții, hackerii trec cu ușurință testele de securitate. Acestea pot obține cu ușurință date din baza de date SQL. Cu SQL Injection pot adăuga, modifica și șterge înregistrări din baza de date. Această bază de date poate fi oricine dintre MySQL, SQL Server, Oracle, SQL Server etc. este ilegală.

Dacă un site web sau o aplicație este prost conceput, aceste atacuri pot dăuna întregului sistem. În acest moment, cibersecuritatea vine în imagine.

Comportamentul injecției SQL

Aceste atacuri funcționează în general pe declarații SQL dinamice. Injecția SQL depinde de un motor de bază de date. Acest lucru diferă de la motor la motor. Când solicităm introducerea utilizatorului pe pagina web, cum ar fi numele de utilizator și parola. În mod neintenționat, oferim utilizatorului acces pentru a da această intrare direct în baza de date.

Tipuri de injecție SQL

  1. Injecție SQL în bandă (injecție SQL Classic): În această tehnică, hackerul folosește același mod de a hack hack-ul bazei de date și de a obține datele adică rezultate din baza de date.
  1. Injecție SQL bazată pe erori: În acest tip, hackerul primește modelul de eroare al bazei de date și îl accesează. Putem spune că acesta este un singur tip de injecție SQL în bandă.
  1. Injecția SQL bazată pe uniune: Această tehnică este, de asemenea, o parte a injecției SQL în bandă. În această tehnică, utilizatorul combină interogarea și obține rezultatul înapoi ca o parte a răspunsului HTTP.
  1. Injecție SQL inferențială (injecție SQL orb): Așa cum sugerează și numele, aici hackerul nu folosește banda pentru a obține date din baza de date. Hackerul are capacitatea de a schimba structura bazei de date prin respectarea tiparelor bazei de date. Acesta este un tip foarte periculos de injecție SQL. Acest atac durează mai mult timp pentru a executa. Hackerul nu poate vedea rezultatul atacului prin această tehnică.
  1. Injecție SQL orbă, bazată pe conținut boolean: Aceasta este o parte a injecției SQL Inferential. În această tehnică hackerul se obligă la baza de date pentru a obține rezultatele bazate pe condiții adevărate sau false. În funcție de această condiție, rezultatul răspunsului HTTP se schimbă. Acest tip de atac pentru a deduce dacă sarcina utilă returnată este adevărată sau falsă, chiar dacă nu sunt returnate date din baza de date. Acestea sunt în special atacuri lente.
  1. Injecția SQL orb bazată pe timp: Această tehnică este, de asemenea, partea injecției SQL Inferential. Această tehnică este folosită de hackeri pentru a pune sarcinile utile. În aceste tehnici, hackerii acordă timp bazei de date pentru a executa interogarea. În același timp, hackerul are o idee despre rezultat, indiferent dacă este adevărat sau fals. Acest proces de atac este, de asemenea, lent.
  1. Injecție SQL în afara bandei: Acesta este un atac bazat pe caracteristici. Acest lucru nu este foarte frecvent. Acest atac este folosit de un hacker atunci când hackerul trebuie să utilizeze diferite canale pentru a ataca și altele pentru a obține rezultatul. Tehnicile de injecție SQL în afara bandei depind de capacitatea serverului de baze de date de a face solicitări DNS sau HTTP pentru a furniza date hackerului.

Cum functioneazã?

Există în principal două moduri în care atacatorul se concentrează pentru a obține date:

  1. Atac direct : folosind direct combinația de valori diferite. Aici hackerul a pus intrarea confirmată care dă rezultatul exact.
  2. Cercetare: analiza bazei de date, oferind diferite date de intrare. Aici, atacatorul observă răspunsurile serverului de baze de date și decide ce atac trebuie făcut.

După cum am discutat deja, hackerii de injecție SQL pun condiția în elementul de intrare, care este întotdeauna adevărat. Vă rugăm să verificați următorul exemplu.

EX:

Să presupunem că avem interogarea de mai jos pentru a obține datele angajaților din baza de date:

500 SAU 1 = 1

Selectați * dintre angajați Unde Userid = '500'

Numele de utilizator :

Dacă nu avem nicio restricție la intrarea utilizatorului. Apoi, hackerii pot utiliza acest câmp pentru a accesa ușor date din baza de date.

Și interogarea poate arăta ca mai jos

Selectați * dintre angajații în care User-id = 500 OR 1 = 1;

Această interogare va returna date din baza de date deoarece 1 = 1 va întoarce întotdeauna adevărat. În acest fel condiția devine adevărată. Acest lucru pare vulnerabil. Acest lucru este foarte periculos pentru organizație. De exemplu, gândiți-vă la sectorul bancar. În cazul în care utilizatorii au parolele cu detalii bancare nete, informații despre sold etc.

Această tehnică este foarte ușoară pentru hacker să obțină informații. Prin simpla furnizare a unor date de intrare în baza de date.

Hackerii obțin date doar prin introducerea OR și = prin introducerea lor în baza de date.

Nume de utilizator:

”Sau„ ”=”

Parola:

”Sau„ ”=”

La server, interogarea finală este executată corect, nu apare nicio eroare. De asemenea, puteți utiliza 'OR' 1 '=' 1 pentru a obține date de pe serverul bazei de date.

Acum, apare întrebarea, cum ne-am menține securitatea bazei de date?

Iar răspunsul este folosind parametrii SQL.

Prin adăugarea de parametri suplimentari la interogare atunci când se execută. Aceste atacuri sunt ușor de prevenit prin unele tehnici de mai jos.

Procedurile de stocare, declarații pregătite, expresii obișnuite, drepturi de acces ale utilizatorilor pentru conexiuni la baze de date, mesaje de eroare etc. sunt tehnicile de prevenire .

Încă un lucru care, ar trebui să ne gândim, este de asemenea sensibil să avem baze de date diferite în scopuri diferite în aplicație.

Încă un lucru este testarea. Cel mai bun mod de a testa baza de date pentru diferite condiții.

Concluzie

Crearea unei baze de date este o parte crucială. A avea riscul de a primi informații în mâna hackerilor nu este bun pentru nicio aplicație. Deci, în timp ce creăm baza de date, trebuie să urmăm niște pași simpli pentru a preveni această pierdere, o frază potrivită pentru aceasta este „Prevenirea este mai bună decât vindecarea”.

Articole recomandate

Acesta a fost un ghid pentru Ce este SQL Injection. Aici discutăm Comportamentul, Cum funcționează și Tipurile de injecție SQL. Puteți parcurge și alte articole sugerate pentru a afla mai multe -

  1. Ce este SQL Server?
  2. Ce este SQL | Limba de interogare explicată
  3. Ce este SQL Developer?
  4. Actualizarea comenzilor SQL
  5. Expresii regulate în Java