SQL AÇIĞI ( SQL İNJECTİON)
SQL açığı (SQL Injection), bir web sitesinin veritabanıyla etkileşim sırasında, kullanıcının giriş yaptığı yerleri düzgün kontrol etmediğinde ortaya çıkan bir güvenlik problemi olur. Bu açık sayesinde saldırganlar, siteye zararlı SQL kodları gönderip, veritabanına izinsiz erişim sağlarlar. Bu da veritabanındaki bilgilerin çalınmasına, değiştirilmesine ya da silinmesine sebep olabilir.
SQL AÇIĞI NASIL BULUNUR
1.) Elle test yapma : Web sitesinin form ya da URL gibi kullanıcı giriş yerlerine, özel SQL kodları yazıp test yapılır. Örneğin, bir form kutusuna ' OR '1'='1 yazarsak, veritabanı tüm verileri gösterebilir.
2.) SQL hatalarını görme : Eger bir web sitesi hata mesajlarında SQL hatalarını gösteriyorsa, bu site SQL açığına sahip olabilir. Bu hatalar, veritabanına gönderilen sorguların düzgün işlenmediğini gösterir.
3.) Otomatik araçlar kullanma : SQLmap, Burp Suite gibi programlarla web sitesi taranarak SQL açığı olup olmadığı kontrol edilebilir. Bu araçlar, siteye farklı SQL kodları gönderip ne tür cevap aldığını inceler.
SQL AÇIĞI NASIL SÖMÜRÜLÜR
Bir saldırgan SQL açığını kullanarak veritabanına izinsiz girebilir ve şu adımları izleyebilir:
1.) Veritabanı yapısını anlama : ilk olarak saldırgan, SQL komutlarıyla veritabanının hangi tablo ve sütunlardan oluştuğunu öğrenir. UNION komutu kullanarak bu bilgilere ulaşabilir.
2.) Veri çalma : Veritabanı yapısı öğrenildikten sonra, kullanıcı bilgileri, kredi kartı gibi hassas veriler çalınabilir. Örneğin, UNION SELECT username, password FROM users -- komutu ile kullanıcı adı ve şifreler alınabilir.
3.) Yetki yükseltme : Saldırgan, veritabanındaki küçük yetkilere sahip bir kullanıcı hesabını yönetici seviyesine çıkarabilir. Böylece sistemin tam kontrolünü alabilir.
4.) Veriyi bozma : SQL açığını kullanarak saldırgan, veritabanındaki bilgileri silebilir ya da değiştirebilir. Örneğin, DROP TABLE komutuyla tüm tabloyu silmek mümkündür.
SQL AÇIĞINDAN KORUNMA YOLLARI
SQL enjeksiyonu saldırılarına karşı korunmak için şu önlemler alınmalıdır:
1.) Hazır SQL sorguları : Hazır sorgular (prepared statements) sayesinde, kullanıcıdan gelen girişler güvenli bir şekilde işlenir ve zararlı SQL kodları engellenir.
2.) Girdileri kontrol etmek : Kullanıcıdan gelen her veri kontrol edilmeli ve zararlı olabilecek karakterler temizlenmelidir.
3. En az yetki prensibi : Veritabanı kullanıcılarına sadece ihtiyaçları kadar yetki verilmelidir. Böylece bir saldırı olduğunda zarar daha sınırlı kalır.
Sonuç olarak, SQL açıkları saldırganlara büyük imkanlar sağlar. Bu yüzden, web sitelerinin bu tür açıklara karşı dikkatli olması ve güvenlik önlemleri alması çok önemlidir.
HERKESE İYİ FORUMLAR



