Hvad er SQL-injektion?

SQL Injection er en kodeinjektionsteknik, der bruges til at angribe datadrevne applikationer ved at indsætte ondsindede SQL-sætninger i eksekveringsfeltet. Databasen er en vigtig del af enhver organisation. Dette håndteres af sikkerhed på højt niveau i en organisation. Lad os først lære, hvad der er SQL.

Hvad er SQL?

SQL er et struktureret forespørgselssprog. Bruges til at interagere og til at manipulere databasen.

Hvad SQL gør nøjagtigt?

  • Opret en ny database.
  • Indsæt, opdater, slet poster.
  • Opret nye forespørgsler.
  • Gemte procedurer.
  • Opret visninger.
  • Udfør forespørgsler.
  • Angiv tilladelser.

SQL-injektionen er en af ​​de største sikkerhedstrusler. Dette hører under cyberkriminalitet.

I SQL har vi et koncept kaldet SQL Injection. Denne teknik bruges til at injicere koden. SQLi (SQL-injektion er også kendt som en type hacking, dvs. injektionsangreb.) Det er også kendt som web-hacking-teknik.

Denne injektion injicerer ondsindet kode i databasen ved at give input på en webside. Disse input har nogle betingelser, som altid er sandt. Med disse betingelser består hackere let sikkerhedstest. De kan nemt hente data fra SQL-database. Med SQL Injection kan de tilføje, ændre og slette poster i databasen. Denne database kan være enhver blandt MySQL, SQL Server, Oracle, SQL Server osv. Er ulovlig.

Hvis et websted eller en applikation er dårligt designet, kan disse angreb skade hele systemet. På dette tidspunkt kommer cybersikkerhed ind i billedet.

Opførslen ved SQL-injektion

Disse angreb fungerer generelt på dynamiske SQL-udsagn. SQL-injektionen er en databasemotorafhængig. Dette adskiller sig fra motor til motor. Når vi beder om input til brugeren på websiden som brugernavn og adgangskode. Utilsigtet giver vi brugeren adgang til at give dette input direkte i databasen.

Typer af SQL-injektion

  1. In-band SQL-injektion (Classic SQL-injektion): I denne teknik bruger hackeren på samme måde til at hacke databasen og hente dataene, dvs. resultatet fra databasen.
  1. Fejlbaseret SQL-injektion: I denne type får hacker databasens fejlmønster og få adgang til den. Vi kan sige, at dette er den ene type in-band SQL-injektion.
  1. Union-baseret SQL-injektion: Denne teknik er også en del af in-band SQL-injektion. I denne teknik kombinerer brugeren forespørgslen og får resultatet tilbage som en del HTTP-respons.
  1. Inferential SQL-injektion (Blind SQL-injektion): Som navnet antyder, bruger hacker her ikke båndet til at hente data fra databasen. Hacker har kapacitet til at ændre strukturen i databasen ved at overvåge databasens mønstre. Dette er en meget farlig type SQL-injektion. Dette angreb tager længere tid at udføre. Hacker kan ikke se resultatet af angreb ved hjælp af denne teknik.
  1. Boolsk-baseret (indholdsbaseret) Blind SQL-injektion: Dette er en del af inferentiel SQL-injektion. I denne teknik tvinger hacker til databasen for at hente resultat baseret på sand eller falsk tilstand. Afhængig af denne betingelse ændres resultatet af HTTP-respons. Denne form for angreb til at udlede, hvis den anvendte nyttelast returnerede sandt eller forkert, selvom ingen data fra databasen returneres. Disse især langsomme angreb.
  1. Tidsbaseret Blind SQL-injektion: Denne teknik er også en del af Inferential SQL-injektion. Denne teknik bruges af hackere til at sætte nyttelastene. I denne teknik giver hackere tid til databasen til at udføre forespørgslen. Imidlertid får hackeren en idé om resultatet, om det er sandt eller falsk. Denne angrebsproces er også langsom i sin natur.
  1. SQL-injektion uden for båndet: Dette er et funktionsbaseret angreb. Dette er ikke meget almindeligt. Dette angreb bruges af en hacker, når hacker skal bruge forskellige kanaler til at angribe og andre for at få resultatet. Out-of-band SQL-injektionsteknikker er afhængige af databaseserverens evne til at fremsætte DNS- eller HTTP-anmodninger om at levere data til hacker.

Hvordan virker det?

Der er hovedsageligt to måder, hvor angriberen fokuserer på at få data:

  1. Direkte angreb: Direkte ved hjælp af kombinationen af ​​forskellige værdier. Her lægger hacker det bekræftede input, som giver det nøjagtige resultat.
  2. Forskning: Analyse af databasen ved at give forskellige input. Her observerer angriberen databaseserverens svar og beslutter, hvilket angreb der skal udføres.

Som vi allerede diskuterede SQL-injektion hackere lægge betingelsen i inputelementet, som altid er sandt. Kontroller følgende eksempel.

EX:

Antag, at vi har nedenstående forespørgsel for at hente medarbejderdata fra databasen:

500 ELLER 1 = 1

Vælg * fra medarbejdere, hvor Userid = '500'

Bruger ID :

Hvis vi ikke har nogen begrænsning på brugerens input. Derefter bruger hackere muligvis dette felt til let at få adgang til data fra databasen.

Og forespørgslen kan se ud som nedenfor

Vælg * blandt ansatte, hvor Bruger-id = 500 ELLER 1 = 1;

Denne forespørgsel returnerer data fra databasen, fordi 1 = 1 altid returnerer sand. På denne måde bliver betingelsen sand. Dette synes sårbart. Dette er meget farligt for organisationen. Tænk for eksempel på banksektoren. Hvor brugere har deres netbankoplysninger, adgangskoder, balanceoplysninger osv.

Denne teknik er meget let for hackeren at få information. Ved blot at give nogle input til databasen.

Hackere får data ved blot at indsætte OR, og = ved at indsætte dem i databasen.

Brugernavn:

”Eller“ ”=”

Adgangskode:

”Eller“ ”=”

På serveren udføres slutforespørgsel korrekt, ingen fejl opstår. Du kan også bruge 'ELLER' 1 '=' 1 til at hente data fra databaseserveren.

Nu opstår spørgsmålet, hvordan skulle vi opretholde vores databasesikkerhed?

Og svaret er ved hjælp af SQL-parametre.

Ved at tilføje ekstra parametre ved forespørgslen, når den udføres. Disse angreb kan let forebygges ved hjælp af nedenstående teknikker.

Gemte procedurer, forberedte udsagn, regelmæssige udtryk, brugeradgangsrettigheder til databaseforbindelse, fejlmeddelelser osv. Er forebyggelsesteknikker .

En ting mere, som vi skulle tro, er det også fornuftigt at have forskellige databaser til forskellige formål i applikationen.

En ting der kommer mere på er at teste. Test af databasen for den forskellige tilstand er også den bedste måde.

Konklusion

Oprettelse af en database er en vigtig del. At have risikoen for at få information i hackers hånd er ikke godt for nogen applikation. Så mens vi opretter databasen, skal vi følge nogle lette trin for at forhindre dette tab, en sætning, der er egnet til dette, er ”Forebyggelse er bedre end kur”.

Anbefalede artikler

Dette har været en guide til Hvad er SQL-injektion. Her diskuterer vi adfærd, hvordan fungerer det og typerne af SQL-injektion. Du kan også gennemgå vores andre foreslåede artikler for at lære mere -

  1. Hvad er SQL Server?
  2. Hvad er SQL | Forespørgselssprog forklaret
  3. Hvad er SQL Developer?
  4. SQL-kommandoer opdateres
  5. Regelmæssige udtryk i Java

Kategori: