Logga in

Kontrollpanel Webbmail Hemsideprogram Webbshop File Manager WordPress

Vad är en SQL-injektion?

Läs våra exempel på en SQL injektion för att förstå hur SQL attacker fungerar

vector

I korthet

Glossary

En SQL-injektion är en typ av cyberattack där hackare använder skadlig kod för att manipulera en webbplats databas och få tillgång till dess känsliga information.

Structured Query Language, även känt som SQL eller SQLI eller SQL-injektion är en sårbarhet i internetsäkerheten som gör en hackerattack möjlig. Vi SQLI kan en hackare komma åt data som de egentligen inte har rätt att lägga vantarna på. Datan de kommer över kan vara av privat natur eller data som tillhör den applikation eller hemsida som används.Vad händer då med den data som bedragarna kommer åt via en hackerattack? Vanligtvis kommer hackaren radera all data från internetapplikationen eller förändra den så att konsumenterna och ägarna inte kan använda den som vanligt. I vissa fall kommer de som utför en SQL-injektion attack försöka komma åt servern för att förhindra att äventyra dess funktion.

Följderna av en SQL-injektion attack

Ett SEL-injektion exempel, eller snarare ett exempel på följderna av sn SQL-injektion attack är att det kommer påverka ditt företags verksamhet på ett ytterst negativt sätt. Privat information om dina kunder kan läcka som en följd av en dylik hackerattack. Problematiken med detta är naturligtvis flerfaldig. Dels placerar det dina kunder i en svår situation men det kan även vara olagligt att läcka vidare uppgifter till en tredje part, något som i princip händer vid en SQL-injektion attack. För att något som drabbar dig inte ska ses som ett SQL-injektion exempel i framtiden behöver du därför vidta alla säkerhetsåtgärder du kan för att förhindra en attack.

SQL-injektion exempel

För att göra det tydligare ska vi ge ett SQL-injektion exempel. Om du har en e-handel där du säljer skor, och framförallt sneakers, så kommer besökare som är intresserade av just sneakers besöka din hemsida. När en av dina potentiella kunder klickar på en kategori kommer deras browser skicka en förfrågan till en dylik adress:

https://fake-website.com/products?catgory=Sneakers

Din webapplikation kommer göra en SQL-förfrågan för att ta emot relevant information om den kategorin från databasen. SQL-förfrågan kommer med största sannolikhet läsas som något i stil med: 

Select * FROM products WHERE category = ‘Sneakers’ AND released = 1.

En sådan förfrågan innebär att SQLI ber databasen att skicka information om produktkategorierna du har, och i det här fallet specifikt sneakers.

“Released = 1” – detta är en form av begränsning. Om det finns en etta med i förfrågan innebär det att man vill dölja produkter som inte har blivit lanserade än. Det kan exempelvis handla om att du har sneakers du vill lansera senare. Ettan gör att allmänheten inte kommer se de produkterna.

Din webapplikation kan ha svårt för att skydda sig mot en hackerattack som SQL-injektion. Därför kan en hackare utföra en SQL-injektion via en dylik länk:

https://fake-website.com/products?catgory=Sneakers’–

Det i sin tur resulterar i en SQLI förfrågan som ser ut såhär: 

Select * FROM products WHERE category = ‘Sneakers’–‘ AND released = 1

Sekvensen med två stycken “–” visar att förfrågan är en kommentar. Om ditt datasystem tror att förfrågan är en kommentar kommer det inte heller veta att det är en attack. 

Vidare kommer en dylik SQL-injektion attack, när de dubbla “–” är med även visa de produkter du tidigare valt att dölja. Alltså kommer dina kunder även se sådana produkter som du själv inte valt att lansera ännu.

Vid en hackerattack kan hackaren också skicka en förfrågan via SQLI för att visa precis allting du säljer på din hemsida, det vill säga alla produkter du har även fast de är i andra kategorier. Det kompromissar användarvänligheten på hemsidan på flera sätt.

Ett SQL-injektion exempel i ett dylikt fall skulle vara en förfrågan likt denna: 

https://fake-website.com/products?catgory=Sneakers’+OR+1=1–

Det kommer skapa en SQL-förfrågan som ser ut såhär: 

Select * FROM products WHERE category = ‘Sneakers’ OR 1=1–’ AND released = 1

En sådan förfrågan innebär att alla produkter som finns på din hemsida kommer visas. Det finns mängder av andra sätt som en hackare kan utföra en SQL-injektion attack. Vi kommer gå in på några av dem kortfattat här nedanför. 

  • Boolean

Hackaren skickar en SQL-förfrågan för att få ett svar snabbt från databasen. När någon använder den här metoden kan hackaren snabbt se om svaren hen fick från databasen är korrekta eller inte. 

  • Tidsfördröjning

Hackaren skickar en förfrågan som gör att databasen kommer behöva vänta, det vill säga att det skapas en tidsfördröjning. Via den här metoden kan hackaren se om förfrågan var korrekt eller inte beroende på hur lång tid det tar för databasen att svara. 

  • Out-of-band

En hackare kan använda sig av en Out-of-band-attack om servern som databasen använder har specifika funktioner. Hackaren kommer i ett sådant fall komma över data genom en out-of-band-kanal och flytta all data så den lagras på en annan plats. Den här typen av SQL-injektion attack utgår från att servern kommer göra en DNS eller HTTP-förfrågan för att förflytta den privata informationen till hackaren. 

SQL-injektion attacker

Det finns många olika SQL-injektion attacker. Det kan bland annat handla om att datan i databasen förändras, att data läggs till eller väljs bort.

Att förhindra en SQL-injektion

Det finns saker du kan göra nu på direkten. Majoriteten av de sårbarheter som kan uppstå via SQL kan du hitta relativt snabbt. 

  • Scanning

Använd Burp Suites sårbarhetsscanner. Scannern låter dig göra test på olika delar av din hemsida för att hitta sårbarheter. Via den kan du hitta fel, problem i systemet och även se hur responsiv din applikation är. 

  • Ingångsvalidering och WAF

Skapa en kod som kan identifiera icke legitima användare. Det här är inte en vattentät metod när den används separat för sig. Den kan även skapa flertalet falska positiva svar. Om du väljer att använda den här metoden samtidigt som du använder en brandvägg kan den vara effektig. en WAF kommer filtrera ut SQLI och andra hot.

När en WAF får tecken på att det är en icke legitim användare kommer den börja med att verifiera besökarens IP-adress innan förfrågan blockeras. 

Med denna text hoppas vi att du har lärt dig mer om SQL. Lycka till med att skapa en säker internetanvändning för dig och dina kunder!