#1  
Alt 06-06-2013, 07:21 PM
WO Üyesi
 
Üyelik tarihi: Jun 2013
Yaş: 28
Mesajlar: 440
Tecrübe Puanı: 452
perfecTr is on a distinguished road
Standart SQL Injection neden dolayı oluşur ve Nasıl Korunulur?

Bu yazı dizisi temel olarak saldırıya dayalı olduğundan dolayı detaylı korunma ve defans yolları anlatılmamıştır ve bu yazı dizisi etrafında anlatılmayacaktır. Saldırıyı anlamak korunmayı anlamanın en önemli kısımlarından biridir. Yazıda sadece yöntemlere değinilmiş ve ilgili dil-platform implementasyon pratiği okuyucuya bırakılmıştır.

SQL Injection şüphe götürmez ki web uygulamalarında yaygınlık / hasar oranı en yüksek açıktır. Muhtemelen exploit etmesi de en eğlenceli ve bazen tahmin edilenden daha zor olan açıktır.

Belirttiğimiz gibi SQL Injection’ ın ana nedeni web uygulamasının kullanıcıdan gelen girdiyi doğru şekilde kontrol etmeden o girdi ile dinamik bir SQL cümleciği oluşturmasından kaynaklanmaktadır.

Bir önceki bölümdeki örnekte dikkat ettiyseniz saldırı girdisi (') tırnak karakteri ile başlamıştı. Çünkü SQL’ e istediğimiz komutu göndermek için öncelikle string bölümünden (') tırnak karakteri ile kaçıp daha sonra istediğimiz SQL komutunu SQL cümleciğine ekledik. Burada eklediğimiz komut “OR 1=1” gibi bir komuttu. Bu komut sayesinde SQL cümleciği tüm kayıtları döndürdüğünden dolayı sisteme başarılı bir şekilde giriş yapabilmiştik.

Özetle normalde SQL cümleciğinin yapısını değiştirerek yapması gerekeni değil yapmasını istediğimiz şeyi yaptırdık. Bunun ana nedeni ise SQL cümleciğinin içerisine dışarıdan (') tırnak karakteri aracılığı ile komut ekleyebilmemizdi.

SQL Injection’ dan korunma da iki altın kural vardır.

1. Tüm meta-karakterlerden kaçılmalıdır,
2. Nümerik olarak beklenen parameterlerin nümerik olup olmadığı kontrol edilmelidir.

Birinci Kural;
Dinamik oluşturulan tüm SQL cümlecikleri meta karakterlerden başarılı bir şekilde kaçmalıdır. Örnek olarak SQL Server için (') tek tırnak karakterini uygulama (') iki tek tırnak ile değiştirilmelidir. Bu sayede SQL Server bunun tek tırnak karakteri olduğunu anlayabilir.

İkinci Kural;
Eğer oluşturulacak SQL cümlesi için beklenen data nümerik ise nümerik mi diye kontrol edilmeli eğer ve nümerik değilse uygulama bu datayı kabul etmemelidir.

Saldırının anatomisi anlaşıldıktan sonra defansı gayet basit olacaktır.

SQL cümleciği oluşturulmadan önce SQL cümleciğini oluşturmaya yardımcı olan tüm dinamik dataların beklenen data tiplerine uyup uymamasının kontrol edilmesi. Nümerik beklenen data gerçekten nümerik mi? gibi.String kayıtlarda kesinlikle meta karakterlerden kaçmaParameterized SQL cümlecikleri oluşturmaStored Procedure Kullanma (Stored Procedure lerde güvenli şekilde yazılmalıdır)Whitelisting, Sadece beklenen karakterlerin kabul edilmesi. Mesela isim girilecek bir yerde noktalama işaretlerinin kabul edilmemesi gibi. Whitelisting yapıldıktan sonra gene meta-karakterlerden kaçılmalıdır.Detaylı korunma metotları bu yazı dizisinin konusu dışındadır.

Alıntıdır.
Alıntı ile Cevapla
Cevapla

Bookmarks

Etiketler
dolayı, injection, korunulur, nasıl, neden, oluşur, sql, ve

Seçenekler
Stil

Yetkileriniz
Konu Acma Yetkiniz Yok
Cevap Yazma Yetkiniz Yok
Eklenti Yükleme Yetkiniz Yok
Mesajınızı Değiştirme Yetkiniz Yok

BB code is Açık
Smileler Açık
[IMG] Kodları Açık
HTML-Kodu Kapalı
Trackbacks are Açık
Pingbacks are Açık
Refbacks are Açık


Forum Sosyal
Powered by vBulletin® Webster Edition
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
SEO by vBSEO 3.6.1 ©2011, Crawlability, Inc.
- Forum

Tasarım : VampRens
Wmofisi.Com Her Hakkı Saklıdır

antalya escort adana escort ankara escort hatay escort bodrum escort gaziantep escort kayseri escort samsun escort afyon escort manisa escort