Webmaster Forumu

Geri git   Webmaster Forumu > Webmaster Kaynak Eğitim Tanıtım Hizmet > Programlama Dilleri > ASP .NET
Kayıt ol Blogs Yardım Üye Listesi Ajanda iTrader Forumları Okundu Kabul Et

ASP .NET ASP & .NET

Cevapla Add This!
 
LinkBack (1) Seçenekler Stil
  1 links from elsewhere to this Post. Click to view. #1 (permalink)   iTrader 
Alt 2008-03-23, 19:06
hakanizm - ait Kullanıcı Resmi (Avatar)
Gold Member
 
Üyelik tarihi: May 2006
Nerden: Nereye
Mesajlar: 1.036
Tecrübe Puanı: 3
iTrader: %0/0
hakanizm will become famous soon enough
Question MsSql de bu kodlarla injeksiyon yer miyim?

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 hackleyebilirler mi ?

PortakalSelect = New SqlCommand("Select Bresim, HaberId, ArsivTarihi, KategoriId, Kategoriler, Yazi, Rate, SUBSTRING(Baslik, 1, 60) as SPORTekBaslikTmp From items WHERE ArsivTarihi=(SELECT ogun FROM online) And KategoriId = 4 ORDER by Baslik", Portakalcon)
__________________
www.milligazete.com.tr
Alıntı ile Cevapla

  #2 (permalink)   iTrader 
Alt 2008-03-23, 21:41
Mp3Powers.Com - ait Kullanıcı Resmi (Avatar)
Member
 
Üyelik tarihi: Apr 2005
Mesajlar: 129
Tecrübe Puanı: 3
iTrader: %0/0
Mp3Powers.Com is on a distinguished road
Standart

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 ( --, ', drop) 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:
Function SqlKoruma(strWords)
strBadWords = Array("SELECT", "DROP", "--", "INSERT", "DELETE", "xp_", "UNION", "UPDATE", "'", "’", "<%", "<SCRIPT>", "<META", "<", ">")
strBadWordsReplace = Array("SELECT", "DROP", "--", "INSERT", "DELETE", "xP_", "UNION", "UPDATE", "'", "'", "", "", "", "[", "]")
For iSQL = 0 to uBound(strBadWords)
strWords = Replace(strWords, strBadWords(iSQL), strBadWordsReplace(iSQL),1,-1,1)
Next
SqlKoruma = strWords
End Function
Kolay gelsin
__________________
just coder
Alıntı ile Cevapla

  #3 (permalink)   iTrader 
Alt 2008-03-23, 23:35
hakanizm - ait Kullanıcı Resmi (Avatar)
Gold Member
 
Üyelik tarihi: May 2006
Nerden: Nereye
Mesajlar: 1.036
Tecrübe Puanı: 3
iTrader: %0/0
hakanizm will become famous soon enough
Standart

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("KatAd")
GelenKatId = Request.QueryString("KatId")
GelenTarih = Request.QueryString("Tarih")
__________________
www.milligazete.com.tr
Alıntı ile Cevapla

  #4 (permalink)   iTrader 
Alt 2008-03-24, 13:32
Member
 
Üyelik tarihi: Apr 2005
Nerden: Live in .NET
Mesajlar: 375
Blog Entries: 1
Tecrübe Puanı: 3
iTrader: %100/2
DincerAydogdu is on a distinguished road
Standart

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.
__________________
Eğer bir yanlış yapacaksan, bari onu doğru yap...

Konu DincerAydogdu tarafından (2008-03-24 Saat 13:34 ) değiştirilmiştir..
Alıntı ile Cevapla

  #5 (permalink)   iTrader 
Alt 2008-03-24, 14:11
hakanizm - ait Kullanıcı Resmi (Avatar)
Gold Member
 
Üyelik tarihi: May 2006
Nerden: Nereye
Mesajlar: 1.036
Tecrübe Puanı: 3
iTrader: %0/0
hakanizm will become famous soon enough
Standart

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("KatId")) bu şekilde önleyebilirsin.
---
__________________
www.milligazete.com.tr
Alıntı ile Cevapla

  #6 (permalink)   iTrader 
Alt 2008-03-24, 15:07
Member
 
Üyelik tarihi: Apr 2005
Nerden: Live in .NET
Mesajlar: 375
Blog Entries: 1
Tecrübe Puanı: 3
iTrader: %100/2
DincerAydogdu is on a distinguished road
Standart

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 (tüm application üzerinde)

Ayrıca teknik olarak bir diğer yanı ise .NET framework kullanırken eski VB komutlarını kullanmayı (CInt bunlardan biridir) 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:
Module Module1

    Sub Main()
        Dim PortakalCon As New SqlClient.SqlConnection("Connection string buraya")
        Dim Command As New SqlClient.SqlCommand
        Command.Connection = PortakalCon
        Command.CommandText = "SELECT falan,filan FROM tabloadi WHERE id=@id AND falan=@falan AND filan=@filan"
        Dim par0 As New SqlClient.SqlParameter("@id", 1) 'Buraya Request.QueryString("id") girmende hiçbir sakınca yoktur.
        Dim par1 As New SqlClient.SqlParameter("@falan", "falanca")
        Dim par2 As New SqlClient.SqlParameter("@filan", "filanca")
        Command.Parameters.Clear()
        Command.Parameters.Add(par0)
        Command.Parameters.Add(par1)
        Command.Parameters.Add(par2)
        'Sonrası malum...
    End Sub

End Module
__________________
Eğer bir yanlış yapacaksan, bari onu doğru yap...
Alıntı ile Cevapla

  #7 (permalink)   iTrader 
Alt 2008-03-24, 21:25
hakanizm - ait Kullanıcı Resmi (Avatar)
Gold Member
 
Üyelik tarihi: May 2006
Nerden: Nereye
Mesajlar: 1.036
Tecrübe Puanı: 3
iTrader: %0/0
hakanizm will become famous soon enough
Standart

Sağolasın. cint olayında benim dll oluşturmama sesini çıkarmıyorsa önemli değil. Ama senin verdiğin örnekte queryleri "@" bu parameter olayıyla kullandığım zaman sorun çözülüyorsa parameter kullanayım.. Bir asp.net kitabında @ lu queryleri okumuştum
__________________
www.milligazete.com.tr
Alıntı ile Cevapla

Cevapla


LinkBacks (?)
LinkBack to this Thread: http://forum.iyinet.com/asp-net/87900-mssql-de-bu-kodlarla-injeksiyon-yer-miyim.html
Konuyu Başlatan For Type Tarih
MsSql de bu kodlarla injeksiyon yer miyim? : RSS Dünyasi This thread Pingback 2008-03-23 20:02

Konuyu Toplam 1 Üye okuyor. (0 Kayıtlı üye ve 1 Misafir)
 
Seçenekler
Stil


Benzer Konular
Konu Konuyu Başlatan Forum Cevaplar Son Mesaj
Sql injeksiyon dedikleri benim başıma gelir mi ? hakanizm MySQL Veritabanı SQL 11 2008-04-12 14:57
PR3 0 Cıkışlı Link degişimi Yeni Kodlarla PR2+ Aristograt Google PR Link Değişimi 29 2008-03-13 18:41
Table Kodlarla Oluşturuldu... Örnek Kodlar ve Tabiiki Sorun (ceviz.net) RSS Ordan burdan konumuzla ilgili RSS ler 0 2007-06-12 09:00
Mssql 2005ten mssql 2000 e dönüştürme? (ceviz.net) RSS Ordan burdan konumuzla ilgili RSS ler 0 2007-04-22 19:30
Son moda kodlarla oynama darkman Google Adsense 11 2006-08-02 14:36


Bütün Zaman Ayarları WEZ +2 olarak düzenlenmiştir. Şu Anki Saat: 23:46 .


Powered by vBulletin® Version 3.6.10
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Content Relevant URLs by vBSEO 3.1.0

Firefox