Merhaba sevgili okurlar. Bugün oldukça yaygın olan, ülkemizdeki birçok sitede bulunan SQL Injection zaafiyetini ele alacağız.
SQL Injection Nedir?
(Bu Kısım Vikipedi Alıntısıdır!")
SQL Injection, veri tabanına dayalı uygulamalara saldırmak için kullanılan bir atak tekniğidir; burada saldırgan SQL dili özelliklerinden faydalanarak standart uygulama ekranındaki ilgili alana yeni SQL ifadelerini ekler.
SQL injection saldırıları, saldırganların, sistemdeki kullanıcılardan birinin bilgileriyle giriş yapmasına, mevcut verilere müdahale etmesine, bazı işlemleri iptal etmesine veya değiştirmesine, veri tabanındaki tüm verileri ifşa etmesine, veri tabanındaki tüm verileri yok etmesine, veri tabanı sunucusunda sistem yöneticisi olmasına olanak sağlar.
SQL Injection, çoğunlukla web siteleri için kullanılan bir saldırı türü olarak bilinse de SQL veri tabanına dayalı tüm uygulamalarda gerçeklenebilir.
SQL Injection Neyden Dolayı Kaynaklanır?
SQL Injection, Karakterlerin filtrelenmediği zaman, uygulamaya kullanıcı girişinden yeni SQL ifadeleri eklenmesiyle oluşur.
SQL Injection Nasıl Kapatılır?
Örnek olarak şöyle bir kodumuz bulunsun;
$blog_id= $_GET['blog_id'];
$blogdetay_sor=mysqli_query($baglan,"select * from bloglar where blog_id='$blog_id'");
$blogdetay_cek=mysqli_fetch_array($blogdetay_sor);
Gördüğünüz gibi "$blog_id= $_GET['blog_id'];" kısmında bir filtre bulunmadığı için SQL Injection açığımız meydana geldi. Bu durumu düzeltmek istiyorsak kodumuzu aşağıdaki gibi yapmalıyız.
$blog_id=htmlspecialchars(strip_tags(addslashes($_GET['blog_id'])));
$blogdetay_sor=mysqli_query($baglan,"select * from bloglar where blog_id='$blog_id'");
$blogdetay_cek=mysqli_fetch_array($blogdetay_sor);
Gördüğünüz gibi açığımız kapanmış durumdadır. Bugünkü yazımız burada son buluyor! İyi günler, iyi kod yazmalar efenim.
Yorum Gönder