Sql Injection açığı olan bir yazılıma shell atılabilir , veriler alınabilir , okunabilir , düzenlenebilir , yetkiler üyeler vb herhangi bir işlem yapılabilir komple phpmyadmin erişimi gibi düşünebilirsiniz.
Sizlere bunu çok basit bir şekilde fixlemeniz adına bir çok projede kullanmış olduğum fonksiyonu paylaşmak istiyorum bu fonksiyon sizi hem xss hem sql injectiondan koruyacaktır.
Öncelikle sisteminizin en başında çağırılmalı ve supergloballer temizlenmeli.
Fonksiyon dizinin alt elemanlarınada aynı işlemi uygular , html karakterleri kırar tırnak işaretinden kaçınır ve gereksiz boşlukları siler kullanıcı tarafından her gelen veri temizlenmiş olur.
* Sql sorgusunda kullanılacak değişkenleri '{$degisken}' tek tırnak kullanarak yazmalısınız.
function temizle($data = array())
{
if( is_array($data) )
{
$data = array_map('temizle' , $data);
}
else
{
$data = addslashes(stripslashes(htmlspecialchars(htmlspecialchars_decode(trim($data)))));
}
return $data;
}
/*
* Bu işlemden önce kesinlikle herhangi bir superglobal erişimi kullanılmamalı.
*/
$_POST = temizle( $_POST );
$_GET = temizle( $_GET );
Örnek bir sql sorgusu : SELECT * FROM users WHERE id = '{$_POST['id']}' AND name = '{$_POST['name']}'