C# und MySQL .NETZ-Anschluss - keine Möglichkeit der Verhinderung von SQL-Injection-Angriffe in einer generischen Klasse?

Meine Idee ist, erstellen Sie einige generische Klassen für Insert/Update/Select über eine C# (3.5) Winforms app Unterhaltung mit einer MySQL-Datenbank via MySQL .NET-Anschluss 6.2.2.

Beispiel:

public void Insert(string strSQL)
{
   if (this.OpenConnection() == true)
   {
       MySqlCommand cmd = new MySqlCommand(strSQL, connection);
       cmd.ExecuteNonQuery();
       this.CloseConnection();
   }
}

Dann von überall im Programm kann ich eine Abfrage ausführen, mit/ohne Benutzereingabe, nur durch die übergabe eines SQL-Abfrage-string.

Lesen, um auf, SO ist ab zu geben mir den Hinweis, dass dies kann dazu führen, SQL-injection-Angriffe (für jede user-Eingabe-Werte). Ist es überhaupt schrubben die eingegebenen strSQL oder brauche ich zu gehen, und erstellen Sie einzelne parametrisierte Abfragen, in jeder Methode, die Bedürfnisse zu tun, eine Funktion in der Datenbank?

UPDATE1:

Meine Finale Lösung sieht wie folgt aus:

public void Insert(string strSQL,string[,] parameterValue)
{
   if (this.OpenConnection() == true)
   {
       MySqlCommand cmd = new MySqlCommand(strSQL, connection);

       for(int i =0;i< (parameterValue.Length / 2);i++)
       {                        
       cmd.Parameters.AddWithValue(parameterValue[i,0],parameterValue[i,1]);          
       }

       cmd.ExecuteNonQuery();
       this.CloseConnection();
   }}
  • Diese Schreie, schreckliche Idee. Sollten Sie ein ORM oder schreiben gespeicherte Prozeduren.
InformationsquelleAutor John M | 2010-05-05
Schreibe einen Kommentar