Was ist eine SQL-Injection Attack / Sicherheitslücke?
Diese FAQ Antwort wurde von k4thryn:
Eine SQL-Injection-Schwachstelle kann auftreten, wenn ein schlecht geschriebenes Programm verwendet, die User-Daten in einer Datenbank-Abfrage, ohne zunächst die Validierung der Eingabe. Dies ist sehr oft innerhalb von Webseiten mit dynamischen Inhalten. Es gibt einige ausgezeichnete Tutorials und beschreibende Texte zu diesem Thema, ebenso wie viele Buchungen Anfälligkeit für verschiedene Anwendungen von der vollständigen Offenlegung Websites.
Ein einfaches Beispiel für SQL-Injection ist ein HTML-Formular anmelden, in dem Sie einen Benutzernamen und ein Passwort:
<form method="post" action="process_login.php"> <input type="text" name="username"> <input type="password" name="password"> </ form>
Angesichts dieser HTML, kann man ableiten, dass die einfachste (und schlechteste) Weg für das Skript "process_login.php" zu arbeiten wäre für sie zu bauen und zu führen, dass eine Datenbank-Abfrage sieht wie folgt aus:
"SELECT id AUS Logins WHERE username = '$ username' und password = '$ password' ";
Unter diesen Umständen, wenn die Variablen "$ username" und "$ password" werden direkt aus der Eingabe des Anwenders, werden die Login-Skript kann leicht täuschen in der Annahme, dass ein gültiges Passwort wurde durch das Spielen mit der Syntax der SQL-Anweisung. Nehmen Sie den folgenden String wurden als Passwort:
'Oder''='
und wir haben "bob", wie der Benutzername. Sobald die Variablen werden durch Interpolation, die Abfrage oben sieht dann so aus:
"SELECT id AUS Logins WHERE username = 'Bob' und password =''oder''='' ";
Diese Abfrage gibt eine Zeile, weil die letzte Klausel:
... =''oder''
wird immer auf "true" zu bewerten (ein leerer String ist immer gleich eine leere Zeichenfolge).
Prävention von SQL-Injection-Attacken
Die am häufigsten verwendeten Methoden zur Verhinderung dieser Art von SQL-Injection vunerability sind, um die Benutzer-Input für gefährliche Zeichen wie Single-Quotes und mit Prepared Statements, die sagen, die Datenbank genau das, was zu erwarten, noch bevor ein Benutzer-Daten, die an sie.
|






