Sağolasın. cint olayında benim dll oluşturmama sesini çıkarmıyorsa önemli değil. Ama senin verdiğin örnekte queryleri &quot;@&quot; bu parameter olayıyla kullandığım zaman sorun çözülüyorsa parameter kullanayım.. Bir asp. net kitabında @ lu queryleri okumuştum

KategoriId değerinin dışarıdan querystring ile alındığını varsayalım, doğal olarak adres satırından herhangi bir kullanıcı bu değerin yerine sql sorgunu etkileyebilecek zararlı sözcükleri girebilir gibi. Yapman gereken dışarıdan müdahele edilebilecek ve senin sql sorgunda kullandığın değerleri kontrol ettirmen. Mesala en basitinden kategoriID sütunun sayısal olduğu için numerik bir değerle karşılaştırma yapıyorsun. Sorgunda bulunan 4 değerinin numerik olup olmadığını kontrol ettirerek işlem yaptırabilirsin. String değerlerde ise database indeki verileri herhangi bir masaüstü yazılımda kullanmayacağını varsayarak söylüyorum, zararlı kodları html karşılıklarına çevirebilirsin. Aşağıdaki örnek ASP fonksiyonu bu işi yapıyor. Kod:

hakanizm. System. Data. SqlClient. SqlParameter kullan. Bu yöntemle asla injection yemezsin. Örneğin -- ya da ' datası geldiğinde bu gerçekten string olarak -- olarak algılanır.

Bütün sorgularımı aşağıdaki gibi yapıyorum. Yani sanırım stored prosedure kullanmıyorum. Aşağıdaki normal aspx dosyası içerisinde kullandığım komutlar sql injeksiyon açığı mıdır? Sitemi hekleyebilirler mi? PortakalSelect = New SqlCommand(&quot;Select Bresim, HaberId, ArsivTarihi, KategoriId, Kategoriler, Yazi, Rate, SUBSTRING(Baslik, 1, 60) as SPORTekBaslikTmp From items WHERE ArsivTarihi= And KategoriId = 4 ORDER by Baslik&quot;, Portakalcon)

Dincer nasıl kullanıcam? Dediğin şeyi sayfanın en üstüne namespace olarak falan eklemek yetiyor mu? Bir arkadaş şöyle demiş.. Çok küçük bi işlemle halledilebiliyormuş.. GelenKatId = cint(Request. QueryString bu şekilde önleyebilirsin.

Senin için ufak bir örnek yazdım. Bir incele istersen. CInt olayına gelince. Bu tartışılır. Buraya sayısal olmayan bir değer geldiğinde asp. net parse exception atacaktır. Avantajı evet senin işini çözebilir ama bana göre biraz amatörce. Dezavantajı, bu da performans üzerinde gereksiz kayıp demektir Ayrıca teknik olarak bir diğer yanı ise. NET framework kullanırken eski VB komutlarını kullanmayı bir çok MVP önermiyor ki benim de önerim değildir. Sebebi ise derledikten sonra CLR'i inceledikten sonra çıkıyor. Bu VB komutları worker processor'a fazladan gereksiz işlem yaptırıyorlar. Mesela bu convert işlemi CInt ile değil de Framework yapısında bulunan Integer. Parse ya da Convert. ToInt32 ile yapılsaydı en doğrusu bu olacaktı ki bunlar CLR'de tabiri caizse çok temiz şekilde tutulurlar. Kod:

Teşekkürler. Şimdi benim yukarıda verdiğim kodlar ya da şimdi vereceğim kodlarla sitemi riskli hale getirmiş oluyor muyum olmuyor muyum anlayamadım? GelenKatAd = Request. QueryString GelenKatId = Request. QueryString GelenTarih = Request. QueryString