Wat is SQL-injectie?

SQL Injection is een techniek voor code-injectie die wordt gebruikt om datagestuurde applicaties aan te vallen door kwaadaardige SQL-instructies in het uitvoeringsveld in te voegen. De database is een essentieel onderdeel van elke organisatie. Dit wordt afgehandeld door beveiliging op hoog niveau in een organisatie. Laten we eerst leren wat SQL is.

Wat is SQL?

SQL is een gestructureerde querytaal. Gebruikt om te communiceren en om de database te manipuleren.

Welke SQL doet precies?

  • Maak een nieuwe database aan.
  • Records invoegen, bijwerken, verwijderen.
  • Maak nieuwe zoekopdrachten.
  • Opgeslagen procedures.
  • Creëer views.
  • Query's uitvoeren.
  • Stel machtigingen in.

De SQL-injectie is een van de grootste beveiligingsrisico's. Dit komt onder cybercriminaliteit.

In SQL hebben we een concept genaamd SQL Injection. Deze techniek wordt gebruikt om de code te injecteren. SQLi (SQL-injectie is ook bekend als een type hacking, dwz injectie-aanval.) Het staat ook bekend als webhackingtechniek.

Deze injectie injecteert schadelijke code in de database door invoer te geven op een webpagina. Deze ingangen hebben enkele voorwaarden, die altijd waar zijn. Met deze voorwaarden kunnen hackers gemakkelijk veiligheidstests doorstaan. Ze kunnen gemakkelijk gegevens uit de SQL-database halen. Met SQL Injection kunnen ze records in de database toevoegen, wijzigen en verwijderen. Die database kan iedereen onder MySQL, SQL Server, Oracle, SQL Server, etc. zijn, is illegaal.

Als een website of applicatie slecht is ontworpen, kunnen deze aanvallen het hele systeem beschadigen. Op dit punt komt cybersecurity in beeld.

Het gedrag van SQL-injectie

Deze aanvallen werken over het algemeen op dynamische SQL-instructies. De SQL-injectie is afhankelijk van een database-engine. Dit verschilt van motor tot motor. Wanneer we om input voor de gebruiker op de webpagina vragen, zoals gebruikersnaam en wachtwoord. Onbedoeld geven we de gebruiker toegang om die input rechtstreeks in de database te geven.

Typen SQL-injectie

  1. In-band SQL-injectie (klassieke SQL-injectie): bij deze techniek gebruikt de hacker dezelfde manier om de database te hacken en de gegevens te verkrijgen, dwz het resultaat uit de database.
  1. Op fouten gebaseerde SQL-injectie: bij dit type krijgt de hacker het foutenpatroon van de database en krijgt hij toegang. We kunnen zeggen dat dit het enige type in-band SQL-injectie is.
  1. Union-gebaseerde SQL-injectie: deze techniek maakt ook deel uit van in-band SQL-injectie. In deze techniek combineert de gebruiker de query en krijgt het resultaat terug als een deel HTTP-reactie.
  1. Inferentiële SQL-injectie (blinde SQL-injectie): zoals de naam al doet vermoeden, hier gebruikt de hacker de band niet om gegevens uit de database te krijgen. Hacker heeft de mogelijkheid om de structuur van de database te veranderen door patronen van de database te observeren. Dit is een zeer gevaarlijk type SQL-injectie. Deze aanval duurt langer om uit te voeren. Hacker kan met deze techniek de uitvoer van een aanval niet zien.
  1. Op Boolean gebaseerde (op inhoud gebaseerde) Blinde SQL-injectie: dit is een onderdeel van Inferentiële SQL-injectie. In deze techniek dwingt hacker naar de database om een ​​resultaat op te halen op basis van de waar of niet waar. Afhankelijk van deze voorwaarde wordt het resultaat van HTTP-reactie gewijzigd. Dit soort aanval om af te leiden of de gebruikte payload waar of onwaar is, hoewel er geen gegevens uit de database worden geretourneerd. Deze vooral langzame aanvallen.
  1. Op tijd gebaseerde blinde SQL-injectie: deze techniek maakt ook deel uit van inferentiële SQL-injectie. Deze techniek wordt door hackers gebruikt om de payloads te plaatsen. In deze techniek geven hackers tijd aan de database om de query uit te voeren. Tussentijd hacker krijgt een idee over het resultaat of het waar of onwaar is. Dit aanvalsproces is ook traag van aard.
  1. Out-of-band SQL-injectie: dit is een aanval op basis van functies. Dit is niet erg gebruikelijk. Deze aanval wordt door een hacker gebruikt wanneer de hacker verschillende kanalen moet gebruiken om aan te vallen en andere om het resultaat te krijgen. Out-of-band SQL-injectietechnieken zijn afhankelijk van het vermogen van de databaseserver om DNS- of HTTP-verzoeken in te dienen om gegevens aan de hacker te leveren.

Hoe werkt het?

Er zijn hoofdzakelijk twee manieren waarop de aanvaller zich richt om gegevens te verkrijgen:

  1. Directe aanval: direct gebruik van de combinatie van verschillende waarden. Hier heeft hacker de bevestigde invoer geplaatst die het exacte resultaat geeft.
  2. Onderzoek: analyse van de database door verschillende input te geven. Hier observeert de aanvaller de reacties van de databaseserver en beslist welke aanval moet worden uitgevoerd.

Zoals we al hebben besproken, zetten hackers van SQL-injectie de voorwaarde in het invoerelement, wat altijd waar is. Controleer het volgende voorbeeld.

EX:

Stel dat we de onderstaande vraag hebben om werknemersgegevens uit de database te halen:

500 OF 1 = 1

Selecteer * van medewerkers waarbij Userid = '500'

Gebruikersnaam :

Als we geen beperking hebben op de invoer van de gebruiker. Dan kunnen hackers dit veld gebruiken om eenvoudig toegang te krijgen tot gegevens uit de database.

En de zoekopdracht kan er hieronder uitzien

Selecteer * van medewerkers waarbij User-id = 500 OF 1 = 1;

Deze query retourneert gegevens uit de database omdat 1 = 1 altijd true retourneert. Op deze manier wordt voorwaarde waar. Dit lijkt kwetsbaar. Dit is erg gevaarlijk voor de organisatie. Denk bijvoorbeeld aan de banksector. Waar gebruikers hun netto bankgegevenswachtwoorden, saldo-informatie, etc. hebben

Deze techniek is heel gemakkelijk voor de hacker om informatie te krijgen. Door simpelweg wat input te geven aan de database.

Hackers krijgen gegevens door eenvoudig OF in te voegen, en = door ze in de database in te voegen.

Gebruikersnaam:

”Of“ ”=”

Wachtwoord:

”Of“ ”=”

Op de server wordt de eindquery correct uitgevoerd, er treedt geen fout op. U kunt ook 'OF' 1 '=' 1 gebruiken om gegevens van de databaseserver op te halen.

Nu rijst de vraag, hoe zouden we onze databasebeveiliging handhaven?

En het antwoord is met behulp van SQL-parameters.

Door extra parameters toe te voegen aan de query wanneer deze wordt uitgevoerd. Deze aanvallen kunnen gemakkelijk worden voorkomen door enkele onderstaande technieken.

Opgeslagen procedures, voorbereide verklaringen, reguliere expressies, gebruikersrechten voor databaseverbinding, foutmeldingen, enz. Zijn de preventietechnieken .

Nog een ding, we moeten denken, het is ook verstandig om verschillende databases voor verschillende doeleinden in de applicatie te hebben.

Nog een ding komt over het testen. Het testen van de database voor de verschillende omstandigheden is ook de beste manier.

Conclusie

Het maken van een database is een cruciaal onderdeel. Het risico hebben om informatie in de hand van hackers te krijgen, is voor geen enkele toepassing goed. Dus bij het maken van de database moeten we enkele eenvoudige stappen volgen om dit verlies te voorkomen, een zin die hiervoor geschikt is, is "voorkomen is beter dan genezen".

Aanbevolen artikelen

Dit is een handleiding geweest voor Wat is SQL-injectie. Hier bespreken we het gedrag, hoe werkt het en de soorten SQL-injectie. U kunt ook onze andere voorgestelde artikelen doornemen voor meer informatie -

  1. Wat is SQL Server?
  2. Wat is SQL | Query-taal uitgelegd
  3. Wat is SQL Developer?
  4. Update voor SQL-opdrachten
  5. Reguliere uitdrukkingen in Java