sql sorgunuza disaridan* dahil edeceginiz veriler araciliyla yapilan hain saldiri denemesi cesididir. onlem alinmazsa siteniz hacked by yazisi ile dolup tasabilir, zone h org diyarlarinda reklam olabilir.
en bilineni ve en basidi kullanıcı adı ve şifre yerine 'or''=' yazarak gerçekleştirilenidir. halen bu kodu yiyen site bulursanız webmasterına selam edin.
web sitelerinin (dinamik) kullanıcı giriş panelleri gibi siteye giriş yapmak istenilen bölümlerinden veya direk linklerden, web site içerisinde çalışan sql sorgulara müdahale edilmesiyle site de belirli haklara sahip olmak için kullanılan hacking yöntemi.
kodlamada yapılan dikkatsizliklerin,unutkanlıkların,acemiliklerin yol açtığı zaafiyetin sebep oldugu url'den yada inputlardan veritabanına sorgu yaparak bilgi elde etmeye,bilgi eklemeye imkan tanıyan olayın ismi.
genel olarak or = satırı ile yapılırken aynı zamanda sql in comment our özelliği -- ile kullanılabilir. Hala bir çok sitede etkilidir. Ha kime ne faydası olur bunu yapmanın o ayrı konu.
genelde embesil lamerlerin kullandığı bir yöntem. özellikle hazır scriptler üzerinde uygulanır üretmek yerine yıkmayı tercih eden çoluk çocuğun işidir.
zamanında bir çok "büyük" sitenin çökmesine sebep olan ucuz yöntem. Şu zamanda da sql enjeksiyonu yapılmaktadır, ama enjeksiyon kodları artık bir insanın yazamayacağı kadar karmaşık... Bunun için araç-gereç, alet-erdavat kullanılıyor.
SQL injection, hazırlanmış bir programın kullanıcı ile etkileşime girdiği input alanlarına, sorguları değiştirmek şeklinde yapılır ve saldırının temel hedefi kullanıcı ile etkileşimde yapılan, kaydetme,giriş kontrolü,verileri açıklama sorgularıdır.
Sql injection saldırılarından korunmak için, bu etkileşim alanlarına (input, kullanıcının klavyeden gidi yapabildiği alanlar) bir denetim getirmektir. Öncelikle javascript ile hazırlanmış bir form kontrolü, ardından da özel karakterleri değiştiren ya da önlerine onları zararsız kılan ters slash karatkeri (\) ekleyen fonksiyonlar ile kontrolünü sağlayarak önüne geçebilirsiniz.
Saldırgan, uygulama üzerinde kullanıcı giriş ifadesine SQL ifadeleri ekleyerek güvenlik açığı arar. Bunu gerçekleştirebilmek için SQL ifadelerini ve sözdizimini yeteri kadar bilmek gerekir. Aşağıdaki kod satırı, bu güvenlik açığını göstermektedir:
sorgu = "SELECT * FROM kullanicilar WHERE isim =' " + kullaniciAdi + " ';"
Yukarıdaki SQL sorgusunda kullaniciAdi alanına kullanıcı girdisi gelecektir, bu girdiye göre veritabanında arama yapılacak ve sonuç olumlu ise yazılımcının belirlediği işlemler gerçekleşecektir. Bu işlemler muhtemelen arayüzünde kullanıcıAdi verisi girişi için bir alana sahip ve bu veriye göre sisteme dahil edilme işlemini ayarlayan uygulama yazılımıdır. Arka planda girilen veriye göre veritabanında karşılaştırma yapacak ve veri veritabanında bulunuyor ise sisteme giriş sağlanacak, bulunmuyor ise sağlanmayacaktır. Günümüzde uygulamalar güvenliğin daha üst düzey olması için kullanıcı adı verisinin yanında parola da istemektedirler. Burada SQL Injection atağının etkili olabileceği bir açık varsa aşağıdaki şekilde:
' or '1'='1
SQL verisini giriş verisi olarak gönderir isek uygulama tabanında çalışacak sorgu:
sorgu = "SELECT * FROM kullanicilar WHERE isim =' " + kullaniciAdi ' or '1' = '1 + " ';"
şeklinde olur. kullaniciAdi verisi ne olursa olsun '1'='1' koşulu sağlanacağından ve aradaki işlemin OR olmasından dolayı sorgu sonucu her zaman olumlu olacaktır ya da SQL sözdiziminin yorum satırı haline getirme karakterlerini kullanarak:
' or '1'='1' --
' or '1'='1' ({
' or '1'='1' /*
olumlu sonuç elde edilir. Bu karakterlerden sonra gelen tüm karakterler yorum niteliği kazanacaktır ve bir önemi kalmayacaktır.
birçok sistemde var olan açıktır fakat açığın kaynaklandığı dizini bulmak ve kapatmak biraz sıkıntılıdır. sözlük de insan yapımı olduğu için mutlaka açıklar olacaktır ve önemli olan bu açıkları minimum seviyeye indirmektir. kapatmak demiyorum, hiçbir sistemin açığı tam olarak kapatılamaz mutlaka sistemde açıklar olacaktır. önemli olan ise bu açıkların bulunduğu takdirde yönetime konu hakkında bilgi vermektir.