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

War es hilfreich?

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";
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top