Heim > Datenbank > MySQL-Tutorial > Wie können parametrisierte SQL-Anweisungen SQL-Injection-Angriffe verhindern?

Wie können parametrisierte SQL-Anweisungen SQL-Injection-Angriffe verhindern?

Linda Hamilton
Freigeben: 2025-01-25 13:56:10
Original
265 Leute haben es durchsucht

How Can Parameterized SQL Statements Prevent SQL Injection Attacks?

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
Nach dem Login kopieren

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();
}
Nach dem Login kopieren

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
Nach dem Login kopieren

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!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage