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
Patricia ArquetteOriginal
2025-01-25 16:32:09366Durchsuche

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:

<code class="language-csharp">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]);
    }
    // ... 执行查询 ...
}</code>

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!

Stellungnahme:
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