Safeweb voorkomt hacking, exploits en datalekken

SQL injecties

SQL injecties (SQL injections, MySQL injections) veroorzaken vaak erg pijnlijke situaties voor website eigenaar en website ontwikkelaar. Door een juiste SQL injectie kunnen hele databases bloot komen te liggen en kan toegang verkregen worden tot bijvoorbeeld het admin / cms systeem van de website.

Er bestaan verschillende soorten SQL injecties. Het is echter frappant dat de meeste injecties pijnlijk eenvoudig zijn (zie het voorbeeld hieronder). Door een opdracht te plaatsen in een formulier of in de inlog pagina van een website, kan het kwaad al geschied zijn. Ze worden niet uitgevoerd door genieën (uit Rusland) zoals velen denken, maar vaak door jongeren of beginnende programmeurs die een korte tutorial hebben gezien op bijvoorbeeld Youtube. Wij nemen daarnaast waar dat er steeds meer bots (programma's die automatisch website voor website afgaan, op zoek naar lekken) actief zijn die de zwakke websites vinden en rapporteren aan de hacker.

Het goede nieuws is dat u zich zeer simpel kunt verweren tegen SQL injecties! In het rapport van SafeWeb staat duidelijk uitgelegd hoe u (d.w.z. uw programmeur) SQL injecties kunt voorkomen. Neem contact met ons op voor vragen, een vrijblijvende offerte en verder uitleg en advies.

Een simpel voorbeeld van SQL injectie

Zelfs als u niet programmeur bent, kunt u het onderstaande proberen. Heeft u een login op uw website? Vul dan als gebruikersnaam en wachtwoord in: 

' or '1'='1

Of, als dat niet werkt:
" or "1"="1

Als beide niet werken, is uw website in ieder geval beveiligd tegen basale SQL injecties. Als u door dit in te vullen ineens toegang krijgt tot het beschermde deel, is waarschijnlijk uw gehele website lek.

Uitleg:
Als de programmatuur van uw website controleert of de inlog gegevens die binnenkomen correct zijn, wordt een SQL query uitgevoerd. Dit is een aanvraag naar de database toe. Een dergelijke SQL query kan zo eruit zien:

select * from users where username = '...' and password = '...';

Deze query 'zegt' dit: Selecteer alles van databasetabel "users" waar de gebruikersnaam '...' is en het wachtwoord '...'. Op de plek van de puntjes, worden de ingevulde gegevens geplaatst. Stel dat gebruiker Jan invult: gebruikersnaam Jan en wachtwoord geheim, dan wordt de query:

select * from users where username = 'Jan' and password = 'geheim'; 

Dit is een prima query die vervolgens uitgevoerd wordt door het systeem. In de database wordt nagegaan of er een gebruiker is met username Jan en password geheim. Als deze er is, wordt deze terug gestuurd en is de gebruiker ingelogd. Als niet, komen gebruikersnaam en wachtwoord niet overeen en krijgt Jan een foutmelding en wordt hij terug gestuurd naar het inlog formulier.

Maar stel nu dat bovenstaande SQL injectie wordt ingevuld in het inlog formulier. De query komt dan zo uit te zien:

select * from users where username = ' ' or '1'='1' and password = ' ' or '1'='1';  

Deze query 'zegt' iets heel anders: Selecteer alles van databasetabel "users" waar de gebruikersnaam '' (=leeg) is of waar 1 = 1 en waar het wachtwoord '' (=leeg) is of waar 1 = 1.

Een gebruikersnaam of wachtwoord zal zelden leeg zijn, maar 1 is altijd 1 dus deze query is altijd waar. Gevolg is dat SQL terug stuurt dat dit klopt en dat de gebruiker ingelogd kan worden.

Bovenstaande voorbeeld is slechts een basaal voorbeeld van SQL injectie. Deze vorm van hacking kan erg ver gaan! Laat daarom SafeWeb controleren of uw website bestand is tegen SQL injecties. Neem contact met ons voor meer informatie en een vrijblijvende offerte.

Laat SafeWeb uw website controleren op (o.a.) SQL injecties!

Vul het contat formulier in en wij zullen gauw een offerte terug sturen en uitleg geven hoe verder te gaan. Deze stap is geheel vrijblijvend.

contact formulier

Terug naar pagina 'hacktechnieken'