Heim > Datenbank > MySQL-Tutorial > Wie kann man SQL in Klauseln mit einer variablen Anzahl von Argumenten parametrisieren?

Wie kann man SQL in Klauseln mit einer variablen Anzahl von Argumenten parametrisieren?

Patricia Arquette
Freigeben: 2025-01-25 16:32:09
Original
365 Leute haben es durchsucht

How to Parameterize SQL IN Clauses with a Variable Number of Arguments?

SQL IN-Klauseln sicher parametrisieren und mit verschiedenen Parametern umgehen

Um SQL-Injection-Schwachstellen zu verhindern, ist es wichtig, SQL-Abfragen mit IN-Klauseln zu parametrisieren. Dies kann jedoch kompliziert werden, wenn es um eine variable Anzahl von Argumenten geht. So beheben Sie dieses Problem in SQL Server 2008:

Um jeden Parameter mit C# zu parametrisieren, können Sie Folgendes tun:

string[] tags = new string[] { "ruby", "rails", "scruffy", "rubyonrails" };
string cmdText = "SELECT * FROM Tags WHERE Name IN ({0})";

string[] paramNames = tags.Select(
    (s, i) => "@tag" + i.ToString()
).ToArray();

string inClause = string.Join(", ", paramNames);
using (SqlCommand cmd = new SqlCommand(string.Format(cmdText, inClause)))
{
    for (int i = 0; i < tags.Length; i++)
    {
        cmd.Parameters.AddWithValue(paramNames[i], tags[i]);
    }
    // ... 执行查询 ...
}
Nach dem Login kopieren

Dieser Code erstellt eine parametrisierte IN-Klausel, die die angegebene Anzahl von Parametern enthält. Das Ergebnis ist:

cmd.CommandText = "SELECT * FROM Tags WHERE Name IN (@tag0, @tag1, @tag2, @tag3)"

cmd.Parameters["@tag0"] = "ruby"

cmd.Parameters["@tag1"] = "rails"

cmd.Parameters["@tag2"] = "scruffy"

cmd.Parameters["@tag3"] = "rubyonrails"

Es ist wichtig zu beachten, dass diese Lösung kein SQL-Injection-Risiko darstellt, da der injizierte Text nicht auf Benutzereingaben basiert und nur feste Werte enthält. Benutzereingaben werden sicher in Parametern gespeichert.

Auch wenn zwischengespeicherte Abfragepläne von Vorteil sein können, bieten sie bei einfachen Abfragen wie dieser nicht immer erhebliche Vorteile. Ab der SQL Server 7-Version parametrisiert SQL Server jedoch automatisch Abfragen, was die Bedeutung der Parametrisierung für die Sicherheit hervorhebt.

Das obige ist der detaillierte Inhalt vonWie kann man SQL in Klauseln mit einer variablen Anzahl von Argumenten parametrisieren?. 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