Grundlagen der Informationssicherheit
Warum gelten Prepared Statements mit Platzhaltern (parametrisierte Abfragen) als grundlegendere Gegenmaßnahme gegen SQL-Injection als das Entfernen gefährlicher Zeichen aus der Eingabe?
- AWeil die Eingabe verschlüsselt an die Datenbank übergeben wird, sodass Angreifer sie nicht lesen können
- BWeil der Browser die Art der eingegebenen Zeichen prüft, sodass schädliche Zeichenketten den Server nie erreichen
- CWeil zuerst die Struktur der SQL-Anweisung festgelegt wird und die Eingabe danach nur als Wert übergeben wird, sodass sie, gleich welche Zeichen sie enthält, nie als Teil des Befehls interpretiert wird
Antwort und Erläuterung anzeigen
Antwort: C. Weil zuerst die Struktur der SQL-Anweisung festgelegt wird und die Eingabe danach nur als Wert übergeben wird, sodass sie, gleich welche Zeichen sie enthält, nie als Teil des Befehls interpretiert wird
Bei einem Prepared Statement wird zuerst eine SQL-Anweisung, deren Werte durch Symbole (Platzhalter) ersetzt sind, etwa „SELECT … WHERE id = ? AND password = ?“, an die Datenbank übergeben, um ihre Struktur festzulegen; danach wird die Eingabe nur als Wert angebunden (Binding). Die Eingabe wird von Anfang bis Ende als Daten behandelt und wird daher auch mit Anführungszeichen nie Teil eines Befehls, etwa eines, der eine Bedingung anfügt. Das Entfernen oder Maskieren (Escaping) gefährlicher Zeichen erfordert, sämtliche Detailregeln jedes Datenbanktyps und jeder Zeichenkodierung lückenlos zu behandeln, und schon eine einzige Lücke lässt den Angriff gelingen. Eingabeprüfungen im Browser lassen sich umgehen, wenn der Angreifer Anfragen direkt ohne Browser sendet; sie dienen dem Komfort und sind keine Sicherheitsmaßnahme. Zusätzlich hält es den Schaden klein, dem Konto, mit dem sich die Anwendung mit der Datenbank verbindet, nur minimale Rechte zu geben.
Weiter: 9 weitere Fragen zu Grundlagen der Informationssicherheit