Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Was ist das Übergeben von Parametern an SQL und warum brauche ich das?

Das Übergeben von Parametern an SQL erspart Ihnen das Erstellen einer dynamischen SQL-Zeichenfolge.

Das Erstellen dynamischer SQL-Anweisungen stellt ein RIESIGES Sicherheitsrisiko dar, da Benutzer ihren eigenen SQL-Code in Ihre Anwendung einfügen und möglicherweise unerwünschte Befehle für Ihre Daten ausführen können.

Es gibt einige gute Beispiele für mögliche SQL-Injection-Angriffe unter:

SQL-Injection-Angriffe am Beispiel

Es gibt zwei Möglichkeiten, Parameter an SQL-Anweisungen zu übergeben. Eine besteht darin, gespeicherte Prozeduren wie von Ihnen erwähnt zu verwenden. Die andere besteht darin, parametrisierte Abfragen zu verwenden (was ich eigentlich bevorzuge).

Eine parametrisierte Abfrage ist in .NET eigentlich ganz einfach:

using(SqlConnection conn = new SqlConnection(connString))
{
    SqlCommand command = 
        new SqlCommand("SELECT * FROM Users WHERE Username = @Username", conn);

    command.Parameters.Add(new SqlParameter("@Username", "Justin Niessner"));

    SqlDataAdapter adapter = new SqlDataAdapter(command);
    DataTable dt = new DataTable();

    adapter.Fill(dt);
}

In diesem Beispiel war der Parameter @Username und wir haben die Parameters verwendet Auflistung des SqlCommand Objekt, um den Wert zu übergeben.