Parametriertes SQL: Eine entscheidende Verteidigung gegen SQL-Injection
Datenbanksicherheit ist von größter Bedeutung, insbesondere beim Umgang mit externen Eingaben aus Web- oder Desktop-Anwendungen. Parametrisierte SQL-Anweisungen sind ein Eckpfeiler einer robusten Datenbankinteraktion und verhindern effektiv SQL-Injection-Angriffe.
Stellen Sie sich eine anfällige SQL-Abfrage vor:
SELECT empSalary FROM employee WHERE salary = txtSalary.Text
Ein böswilliger Benutzer könnte 0 OR 1=1
eingeben und so alle Gehälter abrufen. Noch gefährlicher ist, dass Eingaben wie 0; DROP TABLE employee
zu Datenverlust führen können.
Parametrisierte Abfragen bieten eine Lösung. Sie verwenden Platzhalter für vom Benutzer bereitgestellte Daten und isolieren die Eingabe vom SQL-Befehl selbst.
So funktioniert es in C#:
string sql = "SELECT empSalary FROM employee WHERE salary = @salary"; using (SqlConnection connection = new SqlConnection(/* connection info */)) using (SqlCommand command = new SqlCommand(sql, connection)) { SqlParameter salaryParam = new SqlParameter("salary", SqlDbType.Money); salaryParam.Value = txtMoney.Text; command.Parameters.Add(salaryParam); SqlDataReader results = command.ExecuteReader(); }
Und in Visual Basic .NET:
Dim sql As String = "SELECT empSalary FROM employee WHERE salary = @salary" Using connection As New SqlConnection("connectionString") Using command As New SqlCommand(sql, connection) Dim salaryParam = New SqlParameter("salary", SqlDbType.Money) salaryParam.Value = txtMoney.Text command.Parameters.Add(salaryParam) Dim results = command.ExecuteReader() End Using End Using
Der Schlüssel liegt darin, dass die Datenbank @salary
als Datenwert und nicht als ausführbaren Code behandelt. Dadurch wird verhindert, dass Schadcode als SQL-Befehle interpretiert wird. Durch die Verwendung parametrisierter Abfragen wird die Datenbanksicherheit erheblich gestärkt und das Risiko von Datenschutzverletzungen und Systemkompromittierungen verringert.
Das obige ist der detaillierte Inhalt vonWie können parametrisierte SQL-Anweisungen SQL-Injection-Angriffe verhindern?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!