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.