• Günlük Haberler
  • *İNSAN KAYNAKLARI
  • *ÜRÜNLER / HİZMETLER
  • BİLİŞİM
  • DOSYALAR
  • e-TİCARET
  • Giriş
  • Kayıt
28 °c
istanbul
26 ° Cum
26 ° Cts
26 ° Paz
26 ° Pts
Türk İnternet
  • Ana Sayfa
  • BİLİŞİM
  • e-TİCARET
  • INTERNET
  • TELEKOM
  • YENİ TEKNOLOJİLER
  • Hakkımızda
No Result
View All Result
  • Ana Sayfa
  • BİLİŞİM
  • e-TİCARET
  • INTERNET
  • TELEKOM
  • YENİ TEKNOLOJİLER
  • Hakkımızda
No Result
View All Result
Türk İnternet
No Result
View All Result
Ana Sayfa BİLİŞİM Yazılım Sektörü Haberleri

ASP.NET Uygulamanızı SQL Sızdırma Saldırısından Koruyun

Bir saldırgan, web sayfasında giriş yapılabilen bir web formunun girdisine ya da sorgu sabitine SQL sorguları yerleştirerek kötü amaçlı olabilecek SQL komutlarını yürütebiliyorsa bir SQL Sızdırma Saldırısıyla karşı karşıyasınız demektir. Kullanıcının ya da sorgu sabiti girdisinin dinamik SQL sorgularını ya da depolanmış girdi parametrelerini doğrudan doğruya etkileyebildiği girdi formları, bu tür saldırılara açık formlardır.

Mark Strawmyer-Mark Strawmyer
11 Ağustos 2003
-Yazılım Sektörü Haberleri
0
Facebook'ta PaylaşTwitter'da Paylaş

SQL Sızdırma Saldırısı Nedir?

Bir saldırgan, web sayfasında giriş yapılabilen bir web formunun girdisine ya da sorgu sabitine SQL sorguları yerleştirerek kötü amaçlı olabilecek SQL komutlarını yürütebiliyorsa bir SQL Sızdırma Saldırısıyla karşı karşıyasınız demektir. Kullanıcının ya da sorgu sabiti girdisinin dinamik SQL sorgularını ya da depolanmış girdi parametrelerini doğrudan doğruya etkileyebildiği girdi formları, bu tür saldırılara açık formlardır. Olay genellikle şöyle gelişir:

  • Bir web uygulamasının, uygulamaya erişimin denetlendiği bir log-in sayfası vardır. Bu login sayfasına girmek için de bir log-in ve şifre gerekiyordur.
  • Log-in sayfasından verilen girdi, dinamik bir SQL komutu oluşturmak için ya da depolanmış bir prosedür çağrısının doğrudan girdisi olarak kullanılıyordur. Söz konusu sorguyu oluşturmak için nelerin kullanabileceğine bir örnek olarak aşağıdaki kodu verebiliriz:
    • System.Text.StringBuilder query =
    • new System.Text.StringBuilder(
    • “SELECT * from Users WHERE login = ‘”)
    • .Append(txtLogin.Text).Append(“‘ AND password='”)
    • .Append(txtPassword.Text).Append(“‘”);
    • Saldırgan login ve şifre girdisi olarak “‘ or ‘1’=’1” gibi bir girdi yazar.
    • Böylelikle SQL dinamik komutu şunun gibi bir şey olur: “SELECT * from Users WHERE login = ” or ‘1’=’1′ AND password = ” or ‘1’=’1′”.
  • Sorgunun ya da depolanmış prosedürün, girdilerdeki referansları veri tabanındaki referanslarla karşılaştırması temin edilir.
  • Sorgu veri tabanındaki verilere göre işler ve saldırgan bu yanlışlık sayesinde web uygulamasına erişim kazanır çünkü asıl SQL komutunun yerine sızdırılmış SQL komutu geçmiştir.

Uygulamanın girdiyi alacağını ve onu doğrulamak için bir arama icra etmesi ihtimalini olduğunu da göz önüne alan saldırgan, sorgunun tüm kullanıcılara dönmesine ve onların uygulamaya erişim kazanmasına neden olacak kısmi bir SQL sabiti girebilir.

Benim Uygulamamla Kim Ne Yapabilir?

Saldırganın verebileceği hasarın miktarı her bir ortam için farklılık arz edebilir. Bu temelde uygulamanızın veri tabanına erişimde kullandığı güvenlik imtiyazlarına bağlıdır. Eğer kullanıcı hesabının idarecisi ya da bazı yüksek imtiyazları varsa o zaman saldırgan uygulama veri tabanı tablolarına, veri ekleme, silme ya da güncelleme ve hatta tüm tabloları devreden çıkarmak dahil istedikleri birçok şeyi yapabilirler.

Bunu Nasıl Önleyeceğim?


İyi haber, ASP.NET uygulamanızın SQL Sızdırma Saldırısına açık olmasını engellemek göreceli olarak oldukça kolay bir iştir. Tüm kullanıcı girdinizi, bir sorgu komutunda kullanmadan önce filtre etmelisiniz. Bu filtreleme işinin çok sayıda formda yürütülmesi gerekebilir.

  • Eğer dinamik olarak oluşturulan sorgular kullanıyorsanız o zaman şu teknikleri kullanın:
    • Saldırganın SQL komutunu değiştirmesini engelleyecek şekilde, tekil girdilerin yerine iki tekil gerdi geçirerek tekil girdileri sınırlandırın. Yukarıdaki örneği temel alırsak görürüz ki, , “SELECT * from Users WHERE login = ”’ or ”1”=”1′ AND password = ”’ or ”1”=”1′” şeklindeki bir komut “SELECT * from Users WHERE login = ” or ‘1’=’1′ AND password = ” or ‘1’=’1′” şeklindeki bir komuttan çok daha farklı sonuç doğurur.
    • Kullanıcı girdisindeki tire işaretlerini kaldırın ki saldırgan şu tür bir sorgu oluşturması mümkün olmasın: SELECT * from Users WHERE login = ‘mas’ — AND password =” bu tür bir sorgu sorgunun ikinci yarısının değerlendirme dışı kalmasına ve yok sayılmasına neden olur. Bu da geçerli bir kullanıcı login’ini bilen bir saldırgan ilgili şifreyi bilmese bile erişim kazanmasına olanak tanır.
    • Sorgunun altında çalıştığı kullanıcı hesabına verilen veri tabanına erişim iznini sınırlandırın. Veri seçmek, sokmak, güncellemek ve silmek için farklı farklı kullanıcı hesapları kullanın. Başka başka hesaplardan yürütülebilecek işleri birbirlerinden ayırmakla, veri sokma, güncelleme ya da silme komutunun, seçim komutu yerine icra edilmesinin ya da tersi durumun önüne geçmiş olursunuz.
  • Tüm sorguları depolanmış prosedürler olarak kurun ve yürütün. SQL parametrelerinin işleyişe geçiş şekilleri, tire ve apostrof işaretlerinin komut sızdıracak şekilde kullanılmasını engelleyecektir. Ek olarak bu yolla veri tabanı izinlerinin sadece yürütülebilecek belirli prosedürlerle kısıtlı kalması mümkün olur. Tüm kullanıcı girdisi işleyen prosedürün bağlamına uyacak ve olası bir sızdırma saldırısına uymayacak şekilde olmalıdır.
  • Form ya da sorgu sabiti girdisinin uzunluğunu sınırlandırın. Eğer login’iniz 10 karakter uzunluğundaysa o değer için daha fazla karaktere müsaade edilmemesini temin edin. Bu, olası zararlı SQL komutlarının girdiye sızdırılmasını daha da zorlaştıracaktır.
  • Girdinin istenilen değerlerle sınırlı olduğunu teyit için, kullanıcı girdisinde doğrulama işlevi koyun. Veri doğrulaması hem müşteri hem de sunucu bilgisayarsa işlemelidir. Sunucu bilgisayar tarafındaki doğrulama, müşteri bilgisayarındaki doğrulamada meydana gelen güvenlik zayıflığını giderecek nitelikte olmalıdır. Bir saldırganın kaynak kodunuza erişmesi, onu kaydetmesi, doğrulama scriptlerinizi (betiklerinizi) değiştirmesi (ve hatta olduğu gibi silmesi) ve formu sunucunuza uygunsuz veriyle sunması mümkündür. Doğrulamanın işlediğinden mutlak surette emin olmanın tek yolu doğrulamayı sunucu üzerinde de yürütmektir. RegularExpressionValidator gibi doğrulamayı yürütecek müşteri-taraflı betiği üreten ve sunucu-taraflı yöntemi de devreye sokmanızı temin eden birkaç yapım-öncesi doğrulama nesneleri de vardır. Bulabildiğiniz doğrulayıcılar yelpazesi içinde, sizin gereksiniminizle örtüşen bir doğrulayıcı bulamazsanız CustomValidator kullanarak kendi doğrulayıcınızı oluşturabilirsiniz.
  • Login’ler ve şifreler gibi verileri şifrelenmiş bir biçimde saklayın. Kullanıcı girdisini, veri tabanındaki veriyle karşılaştırmak üzere şifreleyin. Veri artık, veri tabanına yönelik hiçbir komut anlamı taşımayan, sızdırılmış komutlardan arınmış ve saldırganın SQL komutunuzu sızdırmasına olanak tanımayacak bir şekilde veri tabanıyla karşılaştırılabilir. System.Web.Security.FormsAuthentication class dosyası, özellikle kullanıcı girdisini arındırmakta kullanışlı olan HashPasswordForStoringInConfigFile’ı içermektedir.
  • Veriyi çağıran bir sorguya verilen yanıtın satır sayısını doğrulatın. Eğer sadece bir satır veri yanıtlaması bekliyorsanız, birden fazla satırlı yanıt geldiğinde sisteme hata verdirin.

Yazar Hakkında

Mark Strawmyer, MCSD, MCSE (NT4/W2K), MCDBA, büyük ve orta ölçekli kuruluşlara yönelik .NET uygulamaları Kıdemli Mimarıdır. Mark ayrıca Indiana eyaleti, Indianapolis’teki Crowe Chizek ile beraber bir teknoloji öncüsüdür. Strawmyer, Microsoft-tabanlı çözümlerin mimarisi, tasarımı ve geliştirilmeleri konularında uzmandır. Kendisine at [email protected] adresinden ulaşabilirsiniz.

Etiketler: Bilgi

Türk İnternet'ten buna benzer yazılar için bildirim almak ister misiniz?

ABONELİKTEN ÇIK
Lütfen yorum yapmak için giriş yapın.

GÜNLÜK BÜLTEN ABONELİĞİ

Aboneliğinizi onaylamak için gelen veya istenmeyen posta kutunuzu kontrol edin.

YAZARLARIMIZ

blank
Ernur Öktem
  • Dassault Systèmes İle 3D Tasarım ve Mühendislik Yazılımları Hakkında Sohbet
blank
Fusun S.Nebil
  • e-Devlet Sitelerine Giren İhlal Edilmiş Hesapların Detayı
blank
Innocenzo Genna* / EU telecom regulation expert
  • Rusya-Ukrayna Çatışması Avrupa’ya Siber Güvenlik Açısından Neler Öğretebilir?
blank
Mehmet Taşnikli
  • Çin, Lisans Almamış Oyunların Yayınını Yasakladı
blank
turk-internet.com / Bilgi
  • “Bağlantınız Gizli Değil” Uyarısı Nedir, Karşılaşıldığında Ne Yapmalı?
blank
Ümit Ağaçsakal
  • “Bırakınız Yapsınlar” mı, “Durdurun Otursunlar” mı?

HAFTANIN ÖNE ÇIKANLARI

  • e-Devlet Sitelerine Giren İhlal Edilmiş Hesapların Detayı
  • DuckDuckGo, Mac için Gizlilik ve Hız İddialı Tarayıcı Yayınladı
  • 2014 Yılında Yıldızlararası Bir Nesnenin Dünyaya Çarptığı Doğrulandı
  • DE-CIX, IRAK-IXP İle İş Birliği İmzası Attı
  • Peter Thiel: Merkez Bankaları İflas Ediyor

HAFTANIN KELİMESİ

TERSİNE MÜHENDİSLİK

Tersine mühendislik (reverse engineering), bir makinayı, bir yazılımı, askeri bir teknolojiyi nasıl çalıştığını görmek için sökme eylemidir.

Nasıl çalıştığını tersinden anlamaya çalışmak, bilgi edinmek ve analiz etmek için yapılır. Genellikle nesneyi çoğaltmak (kopyalamak) veya geliştirmek için kullanılır.

Detayı için Wiki-Turk'e bakınız
blank

Bildirimler

Turk-internet.com masaüstü bildirimlerini almak için lütfen buraya tıklayın

Son Yorumlar

  • Rusya, Meta’ya (Facebook) Erişimi Engelledi için Tolga Kaprol
  • Metaverse, Bir Can Simididir için tkaprol
  • Kademeli Tarifede Elektrikten Tasarruf Tüyoları için maltun1
  • Paylaşılan İnternet ve Özel İnternet Erişimi Arasındaki Fark Nedir? için Halil Teberci
  • Rusya, Sosyal Medya Şirketlerine Sunucularını Taşımaları için Süre Verdi için tkaprol

Haber bültenimize abone olun

Aboneliğinizi onaylamak için gelen veya istenmeyen posta kutunuzu kontrol edin.

  • Haber İndeksi
  • Hakkımızda
  • Gizlilik Bildirimi
  • Firmaların turk-internet.com ile Çalışabilirlik Yöntemleri
  • Destek
  • Bize Yazın

© 2021 Turk-Internet.com

No Result
View All Result
  • Ana Sayfa
  • BİLİŞİM
  • e-TİCARET
  • INTERNET
  • TELEKOM
  • YENİ TEKNOLOJİLER
  • Hakkımızda

© 2021 Turk-Internet.com

Tekrar Hoşgeldiniz!

Aşağıdan hesabınıza giriş yapınız

Şifremi unuttum? Kayıt Ol

Yeni Hesap Oluştur

Kayıt olmak için aşağıdaki formu doldurunuz

Tüm alanların doldurulması gerekiyor. Giriş yap

Şifrenizi geri alın

Lütfen şifrenizi resetlemek için kullanıcı adı veya email adresinizi girin.

Giriş yap
Bu internet sitesinde, kullanıcı deneyimini geliştirmek ve internet sitesinin verimli çalışmasını sağlamak amacıyla çerezler kullanılmaktadır. Gizlilik Bildirimi.