zabezpieczenie textBoxa przez atakiem

0

Można jakimś wyrażeniem regularnym zabezpieczyć pole textBox z imieniem czy nazwiskiem aby było odporne na atak SQL Injection w aplikacji okienkowej w c#?

0

Przed SQL Injection nie zabezpiecza się na poziomie wpisywania do textboxa, tylko na poziomie budowania zapytania SQL przed wykonaniem go.
Jeśli używasz ORMa albo budujesz SqlCommand zgodnie z wytycznymi, to na taki atak nie ma szans.

0

string szukaj_klienta_id = "select CONCAT_WS(' ',nazwisko_nazwa,imie, ulica,nr) from klienci where id_klienta='"** + txtIdSzukaj.Text + **"' ";
MySqlCommand cmd = new MySqlCommand(szukaj_klienta_id, conn);
MySqlDataReader reader = cmd.ExecuteReader();

Jak takie zapytanie mogę w najprostszy sposób zabezpieczyć? Prosił bym o przykład na jego podstawie jak ma wyglądać jego modyfikacja.
Próbowałem ogarniać linqu ale w połączeniu z mysql ciężko mi to szło.

0

Mniej więcej tak:

string szukaj_klienta_id = "select CONCAT_WS(' ',nazwisko_nazwa,imie, ulica,nr) from klienci where id_klienta=@id'";            
MySqlCommand cmd = new MySqlCommand(szukaj_klienta_id, conn);
cmd.Parameters.Add("@id", MySqlDbType.VarChar, 50).Value =  txtIdSzukaj.Text;
MySqlDataReader reader = cmd.ExecuteReader();
0

Dłuższe zapytania buduje się w ten sposób jak zamieściłem poniżej czy można jakoś w skróconej formie dodać więcej parametrów.
Na chwile obecną do testów wszędzie zamieściłem sobie typ VarChar zamiast Int32 w typach liczbowych, czy jeśli by tak zostało to duży błąd? Jaki będzie jego skutek?

  string zapytanie = "INSERT INTO `klienci` (imie, nazwisko_nazwa, ulica, nr, miasto, kod, NIP, nr_tel, mail) VALUES (@imie,@nazwisko,@ulica,@nr,@miasto,@kod,@NIP,@nr_tel,@mail)";

                MySqlCommand cmd = new MySqlCommand(zapytanie, mysql.conn);
                cmd.Parameters.Add("@imie", MySqlDbType.VarChar, 25).Value = textBox_imie_rejestracja.Text;
                cmd.Parameters.Add("@nazwisko", MySqlDbType.VarChar, 25).Value = textBox2.Text;
                cmd.Parameters.Add("@ulica", MySqlDbType.VarChar, 25).Value = textBox3.Text;
                cmd.Parameters.Add("@nr", MySqlDbType.VarChar, 25).Value = textBox4.Text;
                cmd.Parameters.Add("@miasto", MySqlDbType.VarChar, 25).Value = textBox5.Text;
                cmd.Parameters.Add("@kod", MySqlDbType.VarChar, 25).Value = maskedTextBox1.Text;
                cmd.Parameters.Add("@NIP", MySqlDbType.VarChar, 25).Value = textBox7.Text;
                cmd.Parameters.Add("@nr_tel", MySqlDbType.VarChar, 25).Value = textBox8.Text;
                cmd.Parameters.Add("@mail", MySqlDbType.VarChar, 25).Value = textBox9.Text;
                cmd.ExecuteNonQuery();
0

można krócej:

cmd.Parameters.Add("@imie", textBox_imie_rejestracja.Text);

1 użytkowników online, w tym zalogowanych: 0, gości: 1