Citat:
Ursprungligen postat av jahmannow
Tack för ditt svar, men sista frågan är angående siffrorna. Vad är dem till och vad spelar den för roll? Man ser ibland vissa som har längre kombinationer medans andra har mindre, förmodar att det kan vara en radie av ID för varje rad?
Kod:
+union+select+1,2,3,4,5,6,7,8,9,10,11,12--+
Jag tror inte att du behöver fundera så hemskt mycket på det, koden verkar vara utryckt ur sitt sammanhang, och SQL-koden kan eventuellt vara anpassad för att attackera en speciell hemsida.
Hela syftet med SQL injection är att man kan få med egen sql-kod som körs på servern genom att stoppa in den i ett fält som programmeraren tänkt att lägga in i sin databas utan att först ha kontrollerat att det inte finns något felaktigt i indatat.
Det är lättast att förklara med ett exempel:
Tänk om man t.ex har ett inmatningsfält på sidan där det är tänkt att användaren ska ange sitt namn,
det hamnar så småningom i variabeln $namn i serverprogrammet. Om man inte tänker sig för så blir kanske SQL-koden för att lägga in namnet i tabellen anv_tabell i kolumnen anvnamn
insert into anv_tabell (anv_namn) values ('$namn')
Om användaren skrivit in Kalle så blir det
insert into anv_tabell (anv_namn) values ('Kalle')
Om nu en illasinnad person matar in strängen
');select * from anv_tabell;delete from anv_namn --
Så blir resultatet att när SQL-queryn körs så körs effektivt tre SQL-kommandon:
insert into anv_tabell (anv_namn) values('');
select * from anv_tabell;
delete from anv_namn --')
Om vi analyserar detta så blir resultatet att först lägger vi in ett tomt namn i tabellen, sen visar vi alla namn som är inlagda, och sist tar vi bort allting ur tabellen eftersom det inte finns något where-villkor efter delete... . Den avslutande fnutten och parentesen som skulle lett till ett syntaxfel har vi trollat bort med kommentarstecknet "--". Det är ju inte så bra, alla användare har försvunnit, dessutom har vi snott en lista på alla användare som registrerat sig... Man kan spåna vidare här och fiska fram kontonummer, lösenord, epostadresser och så vidare.
Det här var bara ett exempel av många på SQL injection. Som synes kan det orsaka ganska stor skada, men det kräver också att den elake programmeraren har en del kunskap om hur SQL-koden verkligen ser ut på serversidan. Men han kan ju testa sig fram, han har ofta hela natten på sig.
För att avvärja en sån här attack kan man t.ex kontrollera att $namn bara innehåller bokstäver innan man kör sin sql-kod.