Ana Sayfa > Visual C# .NET > C# – Sorgu değişkenlerinde tek tırnak sorunu

C# – Sorgu değişkenlerinde tek tırnak sorunu

Sorguları  içlere değişkenler ekleyerek dinamik yapabiliyoruz,
bunlar hem güvenlik zafiyeti doğuruyor hemde özel karakterlerin sorun çıkarmasına sebep oluyor,
mesela bir firma adı içinde geçen tek tırnak database e yazılırken sorun çıkaracaktır,
çünkü tek tırnak zaten sql için rezerve edilmiş bir karakterdir.
Sorguların içinde dinamik textleri sorgu parametreleri ile atamak en doğrusu ve en güvenlisidir, 
şimdi bu doğru ve güvenli yönteme değinmeyip, hataya açık yöntemimizi biraz daha iyi hale getirelim.

 sorguları illede aralara textler ekleyerek oluşturcaz dersek sorgu metnini aşağıdaki methotlardan geçirerek
tırnak sorununu aşabiliriz.

//Tek tırnak yerine iki adet tek tırnak; tabloda yine tek tırnak olacaktır.
public string tirnakayiklayontem1(string sqltext)
        {
            sonuc = sonuc.Replace(sqltext, "'", "''")
            return sonuc;
        }
// Tek tırnak (ascii 39) yerine benzer tırnak karakteri(ascii 63)
public string tirnakayiklayontem2(string sqltext)
        {
            sonuc = sonuc.Replace(sqltext, "'", "’")
            return sonuc;
        }

Yukarıdaki her iki yöntemde de tablomuza tek tırnak istediğimiz şekilde yazılacaktır.

veya şu mantıkda birşey de yapılabilir, oracle için:
her  ”  ‘  ” karakteri için yerine aşağıdaki değerler basılmalıdır.
Tek tırnak arada bir karakter ise
|| Chr(39) ||

Tek tırnak ilk karakter ise
 Chr(39) ||

Tek tırnak son karakter ise
|| Chr(39)

Sadece tek tırnak replace etmekle güvenli hale getirilemez tabiiki,
aşağıdaki makaleyi okumanızı tavsiye ediyorum.

SQL Injection Ataklarından Nasıl Korunuruz?

.

Yorum Yaz