SQL Dersleri - 12 - SQL Injection - 2

SQL Dersleri - 12 - SQL Injection - 2

Bu makalede sql injection ders serisinin ikinci kısmı yer almaktadır.

Merhabalar sql injection derslerine tüm hızıyla devam ediyoruz. Bu makale serisinde önemli olan nokta , nasıl bir güvenlik önlemi almalıyız ve saldırganlar hangi yöntemleri kullanarak sisteme sızmaya çalışmaktadır türevi yöntemleri içerisine alan makale yer almaktadır. Tüm olaylar ayrıntılarıyla anlatılmayacaktır. 

Kesilmiş SQL Tablolarına Dayalı SQL Enjeksiyon 

Çoğu veritabanı, toplu SQL ifadesini noktalı virgül ile ayırarak destekler.

SELECT * FROM Users; DROP TABLE Suppliers

Yukarıdaki SQL Kullanıcılar tablosundaki tüm satırları döndürür ve ardından Tedarikçiler adlı tabloyu siler. Yani yukarıda iki adet sql ifadesi kullanılmıştır ( farklı işlevler ) 

Aşağıdaki sunucu kodumuz olsaydı;

txtUserId = getRequestString("UserId");
txtSQL = "SELECT * FROM Users WHERE UserId = " + txtUserId;

Ve aşağıdaki giriş yapılır ise ,

Sunucudaki kod şu şekilde geçerli bir SQL deyimi oluşturur:

SELECT * FROM Users WHERE UserId = 105; DROP TABLE Suppliers

Koruma Parametreleri

Bazı web geliştiricileri, SQL enjeksiyon saldırılarını önlemek için SQL girdisinde arama yapmak için kelimeler veya karakterlerden oluşan bir "kara liste" kullanır.

Bu iyi bir fikir değil. Bu sözcüklerin çoğunu (silme veya bırakma gibi) ve karakterleri (noktalı virgül ve tırnak işaretleri gibi) ortak dilde kullanılır ve birçok girdi türünde kullanılmasına izin verilmelidir.

Bir web sitesini SQL enjeksiyon saldırılarından korumanın kanıtlanmış tek yolu, SQL parametrelerini kullanmaktır.

Örneğin ; 

Php INTO deyiminin kullanımına yönelik bir dizge

$stmt = $dbh->prepare("INSERT INTO Customers (CustomerName,Address,City) 
VALUES (:nam, :add, :cit)");
$stmt->bindParam(':nam', $txtNam);
$stmt->bindParam(':add', $txtAdd);
$stmt->bindParam(':cit', $txtCit);
$stmt->execute();

Bir sonra ki makalede görüşmek dileğiyle şimdilik hoşçakalın :) 

Yorum Yaz

Yorum yazabilmek için üye girişi yapmanız gerekiyor!

Yukarı Git