En iyi yanıtlayıcılar
Sql String birleştirme Hk.

Soru
-
public void Add(Product product)//Bana bir Product ver, ben o product'u veri tabanına ekliyeyim dedik. { ConnectionControl(); //1. Parametre @name,2,3... SqlCommand command = new SqlCommand("insert into Products values(@name,@unitPrice,@stockAmount)",_connection);//Al bunu _connection'a gönder. //Parametre olduğu zaman, şöyle bir kod yazıyoruz. Parametre nerde olursa olsun önemli değil(istersek sadece listeleme yapalım), kod aşağıdakilerdir. command.Parameters.AddWithValue("@name", product.Name); command.Parameters.AddWithValue("@unitPrice", product.Name); command.Parameters.AddWithValue("@stockAmount", product.Name); }
Selam abilerim, kardeşlerim. Hoca anlatırken yukarıdaki kodu şöyle bir şey diyor parametre kısmı için. "Şimdi diyeceksiniz ki String birleştirerek yapsaydık ne uğraşıyoruz böyle parametrelerle?" hemen ardından, "Aman derim, sql injection dediğimiz en sık yapılan saldırı yöntemlerinden birine maruz kalabilirsiniz" dedi. Sorunun aslı şu yukarıdaki parametreler string birleştirerek nasıl yapılabilir ki? (soruyu doğru sorup sormadığımdan da emin değilim yeterli gelmediyse kod daha fazla atabilirim)
Yanıtlar
-
public void Add(Product product)//Bana bir Product ver, ben o product'u veri tabanına ekliyeyim dedik. { ConnectionControl(); //1. Parametre @name,2,3... SqlCommand command = new SqlCommand("insert into Products values('" + product.Name + "'," + product.Amount + "," + product.Price + ")",_connection); //Al bunu _connection'a gönder. }
yanlış yöntem olan bu.
e-mail: onay[nokta]yalciner[at]hotmail[nokta]com
- Düzenleyen Önay YALÇINERModerator 7 Ekim 2019 Pazartesi 02:53
- Yanıt Olarak Öneren Mehmet Emin Kaymaz 7 Ekim 2019 Pazartesi 07:41
- Yanıt Olarak İşaretleyen CetinBasozEditor 7 Ekim 2019 Pazartesi 13:48
Tüm Yanıtlar
-
public void Add(Product product)//Bana bir Product ver, ben o product'u veri tabanına ekliyeyim dedik. { ConnectionControl(); //1. Parametre @name,2,3... SqlCommand command = new SqlCommand("insert into Products values('" + product.Name + "'," + product.Amount + "," + product.Price + ")",_connection); //Al bunu _connection'a gönder. }
yanlış yöntem olan bu.
e-mail: onay[nokta]yalciner[at]hotmail[nokta]com
- Düzenleyen Önay YALÇINERModerator 7 Ekim 2019 Pazartesi 02:53
- Yanıt Olarak Öneren Mehmet Emin Kaymaz 7 Ekim 2019 Pazartesi 07:41
- Yanıt Olarak İşaretleyen CetinBasozEditor 7 Ekim 2019 Pazartesi 13:48
-
Ufak bir ek:
Parametre kullanımı yalnızca "SQL injection attack" önlemektedir icin yapılmaz (ana neden o tabii). Bunun yanısira, ana komut hem okunaklı kalır hem de dogru sekilde formatlanir.
Kisacasi ASLA ve ASLA string birleştirerek SQL komutu yazilmamalidir. Parametre kullanılır.
How to create a Minimal, Reproducible Example
The way to Go.
World's most advanced open source (object-) relational Database.
Flutter (for mobile, for web & desktop.- Yanıt Olarak Öneren Mehmet Emin Kaymaz 7 Ekim 2019 Pazartesi 14:03
-
public void Add(Product product)//Bana bir Product ver, ben o product'u veri tabanına ekliyeyim dedik. { ConnectionControl(); //1. Parametre @name,2,3... SqlCommand command = new SqlCommand("insert into Products values('" + product.Name + "'," + product.Amount + "," + product.Price + ")",_connection); //Al bunu _connection'a gönder. }
yanlış yöntem olan bu.
e-mail: onay[nokta]yalciner[at]hotmail[nokta]com
-
Ufak bir ek:
Parametre kullanımı yalnızca "SQL injection attack" önlemektedir icin yapılmaz (ana neden o tabii). Bunun yanısira, ana komut hem okunaklı kalır hem de dogru sekilde formatlanir.
Kisacasi ASLA ve ASLA string birleştirerek SQL komutu yazilmamalidir. Parametre kullanılır.
How to create a Minimal, Reproducible Example
The way to Go.
World's most advanced open source (object-) relational Database.
Flutter (for mobile, for web & desktop.
-
Sadece SQL Injection değil. Kullanıcıya dolaylı/dolaysız açık olmayan sorgular içinde bu geçerli. Örneğin sting birleştirme yapılırsa, "İstanbul'un Hava Durumu" cümlesindeki kesme işareti Runtime'da hataya neden olacaktır.
e-mail: onay[nokta]yalciner[at]hotmail[nokta]com
- Düzenleyen Önay YALÇINERModerator 8 Ekim 2019 Salı 07:07