SQL İnjection tamamen server odaklı çalişmaktadır. SQL Açıkları user inputlarının filtrelenmesinde oluşur. Xss ile SQL arasındaki fark ne derseniz xss tarayıcı bazlı çalışır, SQL ise server ve kullanıcı odaklıdır.

XSS: WEB APPLICATION > USER > BROWSER > USER

SQL: WEB APPLICATION > USER > DATABASE > USER

Hemen bir örnek ile açıklayalım

<?php
$id= $_GET[’id’];
....
$query= "SELECT * FROM users WHERE id= ’ “ .$id." ;"
...
?>
Gördügünüz üzere php dinamik sayfamızda herhangi bir filtreleme yok buyüzden ' veya 'Q gibi karakter ekledigimizde database hatası gelicek ve kişi sql sorgusu göndermeye çaliştiginda admin bilgilerini çekebilecek Şimdi burada cok kısa bir filtreleme ve yasaklama işlemi yapicagiz

<?php
$id= $_GET[’id’];
....
$wk = array("\\\\\\\\"", "\\\\\\\\\\\\\\\\", "/", "*", "’", "=", "-
", "#", ";", "<", ">", "+", "%");

$id = str_replace($wk, "", $id);

$query= "SELECT * FROM users WHERE id= ’ “ .$id." ;"
...
?>
Bu yukaridakı $wk = arry satırında sorgu gönderilmemesi için çeşitli filtreleme, engelleme yaptik bu sayede karakter eklense bile sorgu gönderilmeyecektir.