SQL İnjection Nedir? İnjection Örnekleri

Share

SQL Injection, web uygulamalarında sıklıkla karşılaşılan bir güvenlik açığıdır. Bu açık, bir saldırganın web uygulamalarına kötü amaçlı kod enjekte etmesine izin verir. Bu kötü amaçlı kod, veritabanına erişmek, veritabanındaki verileri değiştirmek veya silmek, hatta sunucuyu ele geçirmek gibi zararlı faaliyetlerde bulunabilir.

SQL İnjection Nasıl Gerçekleşir?

SQL Injection, bir web uygulamasının veritabanına kullanıcı tarafından girilen verileri işlemek için SQL sorguları oluşturması sırasında ortaya çıkar. Eğer web uygulamasında bu işlemler güvenli bir şekilde gerçekleştirilmezse, bir saldırgan web uygulamasına girerek, kullanıcı tarafından gönderilen verilerin içinde SQL kodu enjekte edebilir.

SQL İnjection Nasıl Önlenir?

SQL Injection saldırılarını önlemek için, web uygulamalarının giriş verilerini doğrulamaları ve filtrelemeleri gereklidir. Bu doğrulama, giriş verilerinin beklenen formatta olup olmadığını kontrol etmekle başlar. Bu sayede, beklenmeyen verilerin uygulamanın çalıştığı sunucuya gönderilmesi engellenir. Ayrıca, giriş verileri filtrelenerek zararlı karakterlerin önlenmesi sağlanır.

SQL İnjection Örnekleri

Örnek 1

Bir e-ticaret sitesinde, kullanıcının arama kutusuna girilen kelimeyi arama yapmak için SQL sorgusu oluşturulur. Sorgu şöyle görünebilir:

SELECT * FROM urunler WHERE urun_adi LIKE '%aranan_kelime%'

Bu sorgu, kullanıcının arama kutusuna girdiği kelimeyi arayarak sonuçları getirir. Ancak, bu sorgu güvenli değildir çünkü kullanıcının girdiği kelimenin içinde SQL kodu olabilir. Örneğin, kullanıcının arama kutusuna “‘; DROP TABLE urunler; –” yazdığı düşünülebilir. Bu kod, veritabanındaki urunler tablosunu siler.

Örnek 2

Bir forum sitesinde, kullanıcıların yorum yapabilmesi için bir form bulunur. Bu formda kullanıcının adı, e-posta adresi ve yorumu girilir. Yorumlar veritabanında saklanır ve diğer kullanıcılar tarafından görüntülenebilir. Sorgu şöyle olabilir:

INSERT INTO yorumlar (kullanici_adi, e_posta, yorum) VALUES ('{kullanici_adi}', '{e_posta}', '{yorum}')

Bu sorgu güvenli değildir, çünkü kullanıcı tarafından gönderilen yorumlar içinde SQL kodu olabilir. Örneğin, kullanıcının yorumuna “‘); DROP TABLE yorumlar; –” yazdığı düşünülebilir. Bu kod, veritabanındaki yorumlar tablosunu siler.

Sonuç

SQL Injection, web uygulamalarında sıklıkla karşılaşılan bir güvenlik açığıdır. Bu açık, bir saldırganın web uygulamasına kötü amaçlı kod enjekte etmesine izin verir ve veritabanına erişmek, veritabanındaki verileri değiştirmek veya silmek, hatta sunucuyu ele geçirmek gibi zararlı faaliyetlerde bulunabilir. Bu nedenle, web uygulamalarının giriş verilerinin doğrulaması ve filtrelenmesi gereklidir.

Sıkça Sorulan Sorular

  1. SQL Injection saldırıları nasıl tespit edilir?
    • SQL Injection saldırılarını tespit etmek için, web uygulama günlüklerinin incelenmesi gereklidir. Bu günlüklerde, kullanıcıların sunduğu giriş verilerinin kontrol edilerek, beklenmeyen SQL kodu içerip içermediği kontrol edilir.
  2. SQL Injection saldırıları hangi veritabanı sistemlerini etkiler?
    • SQL Injection saldırıları, SQL dilini kullanan tüm veritabanı sistemlerini etkileyebilir.
  3. SQL Injection saldırılarına karşı başka hangi önlemler alınabilir?
    • SQL Injection saldırılarına karşı alınabilecek diğer önlemler arasında, veritabanı kullanıcı izinlerinin sıkı bir şekilde yönetilmesi, güncel yazılımların kullanılması ve güvenlik açıklarının düzenli olarak taranması yer alır.

Author