Laden...

C# Sql-Injections verhindern

Erstellt von Limits vor 10 Jahren Letzter Beitrag vor 10 Jahren 2.124 Views
Thema geschlossen
L
Limits Themenstarter:in
20 Beiträge seit 2013
vor 10 Jahren
C# Sql-Injections verhindern

verwendetes Datenbanksystem: <MySQL>

Hey,

ich bin grade dabei mein Programm gegen SQL-Injections aber eins verstehe ich nicht. Was ist der Unterschied zwischen Add und AddwithValue und was sind die Vor- und Nachteile?
Muss man auch Sachen sichern, wo nur Daten geholt werden, also select statements aber so wie ich das verstanden habe, muss dies überall, wo Variablen verwendet werden oder Eingabefelder oder, also egal ob select, update, insert, delete?

Außerdem hätte ich noch eine Frage zu dem absichern.
Das ganze sieht bei mir derzeit so aus:

MySqlConnection sql_connection = new MySqlConnection();
MySqlCommand sql_command_suche = new MySqlCommand();
MySqlCommand sql_command_loeschen = new MySqlCommand();

string loeschen_id, option_ID;

option_ID = "select * from Eintrag where Eintrag_ID = '" +
                            id + "';";

loeschen_id = "delete from Eintrag where Eintrag_ID = '" + textBox_ID.Text + "';";

sql_connection.ConnectionString = Anmeldung();

Dann wird nachher, wenn eine Option ausgewählt wird, der Commandtext gesetzt:

sql_command_suche.CommandText = option_ID;
sql_command_loeschen.CommandText = loeschen_id;[

sql_command_loeschen.Connection = sql_connection;
sql_command_loeschen.ExecuteNonQuery();

Naja, nur um mal ein Beispiel zu nennen, man hängt doch dann einfach die Parameter mit Add an den Commantext an und danach macht man, wie bei mir:

sql_command_loeschen.CommandText = loeschen_id;
sql_command_suche.Parameters.Add("@id", textBox_ID.Text);

oder muss man das oben an dem String anhängen? Bin deswegen irgendwie ein bisschen verwirrt.

Danke schon einmal im vorraus.

Gruß

16.842 Beiträge seit 2008
vor 10 Jahren

[Artikelserie] SQL: Parameter von Befehlen
Dort werden alle Fragen beantwortet.

Ja: Du musst jede potentielle Manipulation des Strings vorbeugen - egal welches Statement.

Des weiteren gibt es [Hinweis] Bitte schau in die SDK-/MSDN-Doku wo genaue Methodenbeschreibungen von Framework-Funktionen zu finden sind.
Auch der MySql Provider wird eine solche Beschreibung haben. Ansonsten kann man ja mittel Reflector den genauen Unterschied anschauen.

Bitte beachte in Zukunft [Hinweis] Wie poste ich richtig?

Thema geschlossen