Injection Sql Cheat Sheet
Stell dir vor, du bist auf einer geheimen Mission, um das coolste Eis der Stadt zu finden. Du hast aber keine Karte, nur ein paar kryptische Hinweise. SQL Injection ist ein bisschen so, nur dass die "Hinweise" eigentlich bösartige Anweisungen sind und das "Eis" sensible Daten einer Datenbank!
Die Zutaten für deinen "Eisdiebstahl" (aka SQL Injection)
Okay, okay, wir klauen kein Eis. Aber wir lernen, wie man sich vor Leuten schützt, die es versuchen könnten! Hier sind die wichtigsten Zutaten, die ein Bösewicht (oder du, wenn du übst!) braucht:
Das "Login-Formular" (oder ein beliebiges Eingabefeld)
Das ist die Tür zu unserer Datenbank. Stell dir vor, du wirst nach deinem Namen und deinem Lieblingsgeschmack Eis gefragt, um dich anzumelden. Ein typisches Formular halt.
Die "Bösartige Eingabe"
Das ist der Teil, in dem wir ein bisschen frech werden. Anstatt "Max" und "Schoko" einzugeben, schreiben wir etwas Komisches, das die Datenbank verwirrt. Denk an geheime Codes!
Die "Cheat Sheet" für den ambitionierten (aber ethischen!) Hacker
Hier sind ein paar magische Formeln, die Angreifer gerne benutzen, um in Datenbanken herumzustöbern. Denk dran: Nur zum Lernen und Testen benutzen! Niemals für illegale Zwecke!
Der "Immer-Wahr" Trick: ' OR '1'='1
Stell dir vor, das Login-Formular erwartet einen Benutzernamen und ein Passwort. Anstatt das richtige Passwort einzugeben, schreiben wir:
Benutzername: ' OR '1'='1
Passwort: egal
Was passiert? Die Datenbank denkt: "Okay, der Benutzername ist entweder leer, ODER 1 ist gleich 1. Und 1 ist IMMER gleich 1! Also lasse ich ihn rein!" Bäm! Login ohne Passwort!
Der "Kommentar-Out" Trick: --
Manchmal will man den Rest einer SQL-Anweisung ignorieren. Das geht mit -- (zwei Minuszeichen). Alles, was danach kommt, wird als Kommentar behandelt.
Passwort: supergeheim -- das ist gelogen
Die Datenbank ignoriert alles nach --. Das kann nützlich sein, um lästige Teile der SQL-Anweisung auszuschalten.
Der "Union Select" Trick: UNION SELECT
Das ist wie ein doppelter Löffel Eis! Du fügst einfach eine weitere Anfrage an die Datenbank hinzu. Das ist nützlich, um zusätzliche Informationen abzurufen, die du normalerweise nicht sehen würdest.
Stell dir vor du gibst folgendes in ein Suchfeld ein:
Produktname: Apfel' UNION SELECT version(),database() --
Die Datenbank zeigt dir nicht nur die Ergebnisse für "Apfel", sondern auch die Version der Datenbank und den Namen der aktuellen Datenbank! Super nützlich für Angreifer!
Der "Sleep" Trick: ; WAITFOR DELAY '0:0:5'
Dieser Trick ist wie ein Nickerchen für die Datenbank. Er zwingt sie, für eine bestimmte Zeit zu warten. Das kann nützlich sein, um herauszufinden, ob eine SQL-Injection funktioniert, weil die Antwortzeit der Seite sich plötzlich verlängert.
Benutzername: test'; WAITFOR DELAY '0:0:5'--
Wenn die Seite 5 Sekunden braucht, um zu antworten, weißt du, dass die Datenbank den Befehl WAITFOR DELAY ausgeführt hat. Jackpot...äh...nicht gut!
Wie man sich vor diesen "Eisdieben" schützt
Zum Glück gibt es viele Möglichkeiten, sich vor SQL-Injection zu schützen. Hier sind ein paar wichtige Tipps:
Parameterisierte Abfragen sind dein bester Freund
Das ist wie ein Superheldenschild für deine Datenbank. Anstatt die Eingabe direkt in die SQL-Anweisung einzufügen, werden Platzhalter verwendet, die dann sicher mit den Eingabedaten gefüllt werden. Das verhindert, dass bösartige Eingaben als Code interpretiert werden.
Eingabevalidierung ist Pflicht
Prüfe IMMER, ob die Eingabe des Benutzers korrekt ist. Erwartest du eine Zahl? Stelle sicher, dass es eine Zahl ist! Erwartest du eine E-Mail-Adresse? Stelle sicher, dass es eine gültige E-Mail-Adresse ist! Je strenger, desto besser!
Escaping ist auch nützlich
Wenn du Parameterisierte Abfragen nicht verwenden kannst (warum eigentlich nicht?!), dann musst du zumindest die Eingabe "escapen". Das bedeutet, dass du spezielle Zeichen (wie ' oder ") so behandelst, dass sie nicht als SQL-Code interpretiert werden.
Regelmäßige Sicherheits-Audits sind wichtig
Wie bei jedem Hausputz ist es wichtig, regelmäßig nach Sicherheitslücken zu suchen. Lass deine Website von Experten testen, um sicherzustellen, dass alles dicht ist.
Also, das war's! Ein kleiner Einblick in die Welt der SQL-Injection. Denk dran: Wissen ist Macht. Und mit diesem Wissen kannst du deine Datenbanken vor "Eisdieben" schützen und sicherstellen, dass nur die Guten an die leckeren Daten kommen!
