none
Sql String birleştirme Hk. RRS feed

  • 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) 
    6 Ekim 2019 Pazar 23:54

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


    7 Ekim 2019 Pazartesi 02:53
    Moderatör

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


    7 Ekim 2019 Pazartesi 02:53
    Moderatör
  • 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.

    7 Ekim 2019 Pazartesi 14:01
    Yanıtlayıcı
  • 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


    Çook ama çok sagolun hocam Allah işlerinizi rast getirsin
    7 Ekim 2019 Pazartesi 21:17
  • 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.

    Çook ama çok sagolun hocam Allah işlerinizi rast getirsin
    7 Ekim 2019 Pazartesi 21:17
  • 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


    8 Ekim 2019 Salı 07:06
    Moderatör