Ich habe sowohl meinen Kollegen als auch hier auf SO über die Vorteile der Verwendung von Parametern in SQL-Abfragen, insbesondere in .NET-Anwendungen, gepredigt. Ich bin sogar so weit gegangen, ihnen zu versprechen, Immunität gegen SQL-Injection-Angriffe zu gewähren.
Aber ich frage mich, ob das wirklich stimmt. Gibt es bekannte SQL-Injection-Angriffe, die für eine parametrisierte Abfrage erfolgreich sind? Können Sie zum Beispiel eine Zeichenfolge senden, die einen Pufferüberlauf auf dem Server verursacht?
Es müssen natürlich noch andere Überlegungen angestellt werden, um sicherzustellen, dass eine Webanwendung sicher ist (z. B. das Bereinigen von Benutzereingaben und all diesen Dingen), aber jetzt denke ich an SQL-Injektionen. Ich bin besonders an Angriffen gegen MsSQL 2005 und 2008 interessiert, da dies meine primären Datenbanken sind, aber alle Datenbanken sind interessant.
Bearbeiten: Um zu verdeutlichen, was ich unter Parametern und parametrisierten Abfragen verstehe. Mit Parametern meine ich die Verwendung von "Variablen", anstatt die SQL-Abfrage in einer Zeichenfolge zu erstellen.
Also anstatt dies zu tun:
SELECT * FROM Table WHERE Name = 'a name'
Wir machen das:
SELECT * FROM Table WHERE Name = @Name
und legen Sie dann den Wert des Parameters @Name für das Abfrage- / Befehlsobjekt fest.