SQL Injection Nedir?

SQL Injection Nedir?

Tıpkı faydalı web içeriklerinin veya internet sitelerinin meşhur olmasına benzer bir şekilde, tüm dünya genelinde çeşitli güvenlik açıkları ve saldırı yöntemleri de zaman zaman meşhur olabilmektedir. Dünya genelinde birçok internet korsanı, bu gelişmeleri yakından takip eder ve olası bir güvenlik açığı olması durumunda, bu açık üzerinden saldırı gerçekleştirmeye başlarlar. Bu sayede güvenlik açığının ismi de tüm dünyada bir anda yayılır. İşte SQL Injection da buna benzer bir saldırı yöntemidir. 90’lı yılların sonundan itibaren popülaritesi artmaya başlamıştır. Özellikle 2000’li yılların en çok konuşulan saldırı yöntemlerinden biridir.

SQL Injection

SQL Injection

Çalışma Şekli

Öncelikle SQL Injection, veritabanına dayalı olan uygulamaları hedef alan bir saldırı yöntemidir. Temel prensip olarak hedef kod dizinine (SQL dilindeki) belirli bir yabancı kısım yerleştirilir. Güvenlik açığından faydalanılarak yapılan bu işlem sonucu birçok istenmeyen durum ortaya çıkabilir. En yaygın olarak karşılaşılan ise kurban olarak seçilen internet sitesindeki kullanıcı giriş kısmına SQL Injection yapılmasıdır. Bu sayede giriş yapan kullanıcı, farkında olmadan bilgilerini korsanlara göndermiş olur. Bu yöntem yalnızca web siteler için kullanılıyor gibi gözükse de esasında SQL veritabanına dayalı olan bütün uygulamalarda kullanılabilir.

Yalnızca kullanıcıların verilerinin çalınması değil, site verilerine müdahale, yapılan işlemlerin iptali veya değişikliği, veritabanı verilerinin ifşa edilmesi gibi birçok istenmeyen duruma sebebiyet verebilecek bir saldırıdır. Öyle ki 2012’de bir araştırma sonucuna göre web uygulaması başına ayda 4 adet SQL Injection saldırısı düşmektedir. Bu da oldukça yüksek bir rakamdır.

Korunma Yolları Nelerdir?

Son derece yaygın olan bu saldırının, bu kadar yaygın olmasındaki esas sebep basit bir saldırı olmasıdır. Bu nedenle korunmak için yapılabilecekler de basittir. Öncelikle özel anlamları olan karakterlerden uzak durmak gerekiyor. SQL DBMS tarafından hangi karakterlerin özel bir anlam taşıdığı açıklanmaktadır. Bu kara liste yardımıyla bu karakterleri tespit edebilir ve kod dizininizden uzaklaştırabilirsiniz. Kontrol de önemli bir korunma yöntemidir. Integer, float, boolean ve string parametrelerinin geçerliliğini kontrol etmek oldukça faydalı olacaktır. Son olarak da web uygulama izinlerini kendi belirlediğiniz ölçülerde kısıtlayarak bu saldırıya karşı önlem alabilirsiniz.