folder Tahribat.com Forumları
linefolder C#, Asp.Net, .Net Core
linefolder Asp.Net Te Sql Parametresine Değer Yollama Sorunu??



Asp.Net Te Sql Parametresine Değer Yollama Sorunu??

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Hannibal_King
    Hannibal_King's avatar
    Kayıt Tarihi: 22/Ağustos/2010
    Erkek

    Saolun cevaplar için....


    lrny.app
  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    FCN
    FCN's avatar
    Kayıt Tarihi: 28/Eylül/2007
    Erkek
    CEO bunu yazdı
    Hannibal_King bunu yazdı

    dediğin gibi yaptım oldu hocam peki bu yöntem güvenlik açısından sıkıntılı olur mu bazı yerlerde parametreli kullanın demişlerde hep

    Hocam parametre olarak vermekle direkt olarak böyle yazmak arasında bir fark olduğunu sanmıyorum.

    Sonuçta birini direkt olarak veriyorsun, diğerini parametre olarak(aslında bu da direkt olarak) veriyorsun.

    He eğer güvenlik çok önemliyse management studio ile sql fonksiyonu yazıp o fonksiyona parametre olarak verirsin, böylece yazdığın kodun güvenliğinden emin olabilirsin..

    + query + 

    şeklinde yaptığın sorgular sql injectiona açık sorgulardır. queryini bir temizleme fonksiyonundan geçirmeli veya parametre olarak kullanmalısın.

  3. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Hannibal_King
    Hannibal_King's avatar
    Kayıt Tarihi: 22/Ağustos/2010
    Erkek

    @FCN hocam çözümü de söylermisin nasıl yapayım ? sorguya convert, cast gibi bıseyler mı eklemem lazım neden hata veriyor?


    lrny.app
  4. KısayolKısayol reportŞikayet pmÖzel Mesaj
    SinusX
    SinusX's avatar
    Kayıt Tarihi: 14/Aralık/2010
    Erkek

    Cevabı vermiş zaten 

    Conversion failed when converting the varchar value ‘1,2,0’ to data type int."

    SQL deki grup'un tipi int sen string göndermeye çalışıyorsun

    Onun yerine kelimeyi int array'e çevirip com.AddArrayParameters("deneme",array) olarak çalışması lazım

     

    var groups = kelime.Split(',').Select(i=>int.Parse(i)).ToArray();

    com.AddArrayParameters("deneme",groups);

    gibi

    SinusX tarafından 21/Eki/14 19:13 tarihinde düzenlenmiştir

    Si vis pacem para bellum.
  5. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Hannibal_King
    Hannibal_King's avatar
    Kayıt Tarihi: 22/Ağustos/2010
    Erkek
    SinusX bunu yazdı

    Cevabı vermiş zaten 

    Conversion failed when converting the varchar value ‘1,2,0’ to data type int."

    SQL deki grup'un tipi int sen string göndermeye çalışıyorsun

    Onun yerine kelimeyi int array'e çevirip com.AddArrayParameters("deneme",array) olarak çalışması lazım

     

    var groups = kelime.Split(',').Select(i=>int.Parse(i)).ToArray();

    com.AddArrayParameters("deneme",groups);

    gibi

    Tamam cevabı vermiş ama sentaks bilgim tam olmadığı için kod kısmında ne yazacağımı bilemedim.O string değişkeni nasıl diziye çevirip argüman olarak vericem onu yapamadım.Sen burda sentaks ı uydurmaca yazdın dimi hocam ? addarrayparameters bende çıkmadı ama??


    lrny.app
  6. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Sharp
    Sharp's avatar
    Kayıt Tarihi: 02/Temmuz/2007
    Erkek
    Hannibal_King bunu yazdı
    SinusX bunu yazdı

    Cevabı vermiş zaten 

    Conversion failed when converting the varchar value ‘1,2,0’ to data type int."

    SQL deki grup'un tipi int sen string göndermeye çalışıyorsun

    Onun yerine kelimeyi int array'e çevirip com.AddArrayParameters("deneme",array) olarak çalışması lazım

     

    var groups = kelime.Split(',').Select(i=>int.Parse(i)).ToArray();

    com.AddArrayParameters("deneme",groups);

    gibi

    Tamam cevabı vermiş ama sentaks bilgim tam olmadığı için kod kısmında ne yazacağımı bilemedim.O string değişkeni nasıl diziye çevirip argüman olarak vericem onu yapamadım.Sen burda sentaks ı uydurmaca yazdın dimi hocam ? addarrayparameters bende çıkmadı ama??

    ben function kullanıyorum gelen string'i sql table 'a çeviriyor bu sayede parametre kullanabilirsin injection'ı engellersin 

    http://stackoverflow.com/questions/5257427/sql-server-string-to-table-function

    burayı okuyabilirsin yapamazsan haber et akşama bakalım hacı 


    www.yesilgrow.com - Growshop
  7. KısayolKısayol reportŞikayet pmÖzel Mesaj
    MadJack
    MadJack's avatar
    Kayıt Tarihi: 07/Temmuz/2014
    Erkek

    Şu linkte sanırım tam olarak senin sorunun çözümü var hocam. Bi bak istersen.

    http://stackoverflow.com/a/2377651/2877080

    MadJack tarafından 22/Eki/14 16:45 tarihinde düzenlenmiştir

    Everyone sees just what they want to see.
  8. KısayolKısayol reportŞikayet pmÖzel Mesaj
    acemi-webci
    acemi-webci's avatar
    Kayıt Tarihi: 11/Haziran/2008
    Erkek

    edit: anlamamışım

    acemi-webci tarafından 22/Eki/14 17:11 tarihinde düzenlenmiştir

    ...
  9. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Hannibal_King
    Hannibal_King's avatar
    Kayıt Tarihi: 22/Ağustos/2010
    Erkek

    @mfe25 ve @Sharp hocam şimdi inceliyicem ingilizcemde çok kötü yapamazsam pm atarım size 


    lrny.app
  10. KısayolKısayol reportŞikayet pmÖzel Mesaj
    CuCo
    CuCo's avatar
    Kayıt Tarihi: 19/Ağustos/2014
    Erkek
    Hannibal_King bunu yazdı
           public List sorulari_cek(string kelime)  
           {
                List soru_listesi = new List();
    
                string mycommand = "select * from sorular where grup in (@deneme) order by NewID()";
    
                SqlCommand com = new SqlCommand(mycommand, con);
    
                com.Parameters.AddWithValue("@deneme",kelime);
                con.Open();
    
                SqlDataReader rd = com.ExecuteReader();
                while (rd.Read())
                {
                   sorular nesne = new sorular();
                    nesne.soru_ID =Convert.ToInt32(rd["soru_ID"]);
                    nesne.soru = rd["soru"].ToString();
                    nesne.cevap = rd["cevap"].ToString();
                    nesne.grup = Convert.ToInt32(rd["grup"]);
                    soru_listesi.Add(nesne);
                }
                con.Close();
                return soru_listesi;
            }


    Kod tarafından kelime isimli string değişkenimi   2,15,6,0  şeklinde direk yolluyorum class taki fonksiyona 2. 15. 6. ve  0. gruba ait soruları getırsın diye ama runtime da 

    Conversion failed when converting the varchar value ‘1,2,0’ to data type int." 

    gibisinden hata veriyo 1,2,0 kısmı yerine kelime yazıyo bazen hatada biraz baktım cast ve convert fonksıyonu kullan demısler 

    beceremedım onuda 1-2 denedım olmadı. sql de İN operatorune nasıl değişken sayıda parametre yollayabilirim.??



    1,2,0 olarak verdiğin kelime stringi aslında 1 değil 3 parametre barındırıyor. O nedenle aslında 3 farklı parametre olarak gönderilmesi gerekiyor. Ama sen kodunda bunu tek parametre üzerinden geçirmeye çalışıyorsun, int istediği değeri string olarak gönderiyorsun, bu da yanlış olduğundan hataya düşüyorsun.

    Parametre kullanmayıp direk string olarak verdiğinde de problem bu nedenle ortadan kalkıyor.

    Burada çözümün bu şekilde ilerlemek olacak ise (yorumlara baktığımda farklı öneriler olduğundan diyorum) önerim burada gelen değişken sayına göre dinamik olarak sql command oluşturacak bir yapı kurman olacaktır. 

    Yani query'i gelen kelime öğesine göre kendin server side'da oluşturabilirsin. kelime değişkenin ile gelen datalar nereden geliyor bilmiyorum ama işin içine güvenlik girdiğinden manipule edilebilecek bir yerden geliyorsa her türlü açık verirsin. Bu değerler dropdownlist, radiobuttonlist'den geliyorsa sayfa içeriğini htmlden düzenleyerek, querystring den geliyorsa urlden düzenleyerek manipule etmeye açık olacaktır.

    O nedenle query de parametre ile ilerlemeni öneririm. Dinamik query oluşturmak için birkaç örneğim olsa gerek. İhtiyacın olur ise mesaj atarsan yardımcı olmaya çalışırım.

    CuCo tarafından 31/Eki/14 10:06 tarihinde düzenlenmiştir
Toplam Hit: 2333 Toplam Mesaj: 21