C # Assembly Injection prüfen
-
03-07-2019 - |
Frage
Ich erstelle eine Assembly in C # für MS SQL 2005. Diese Baugruppe eine gespeicherte Prozedur erstellt und betreibt eine dynamische Abfrage auf Basis von Parametern in die gespeicherte Prozedur übergeben.
Gibt es eine einfache Funktion in C # SQL-Injection zu verhindern?
Zum Beispiel
string myQuery = "SELECT * FROM dbo.MyTable WHERE lastName = '" + injectionCheck(arg1) + "'";
Diese Frage wurde für die Standard-Abfrage beantwortet ... aber in Situationen, in denen es keine Möglichkeit, eine wirklich dynamische Abfrage um den Bau, was kann ich in C # für die Injektion überprüft?
Zum Beispiel dieser wahrscheinlich nicht funktionieren:
@dbname verwendet wird;
SELECT * FROM @table
OPEN symmetrischer Schlüssel @keyName
etc
Lösung
Verwenden gebunden Parameter:
SqlCommand cmd = new SqlCommand(myQuery, conn);
cmd.Parameters.Add("@lastname", SqlDbType.NVarChar, 10, lastName);
Andere Tipps
Mit Parameter ....
(Dies wurde häufig bereits gebucht)
string myQuery = "SELECT * FROM myTable WHERE lastname = @p_name";
SqlCommand cmd = new SqlCommand();
cmd.CommandText = myQuery;
cmd.Parameters.Add ("@p_name", SqlDbType.Varchar).Value = "melp";