Çoğu sistemin eskiden ve hala günümüzde bile aktif olarak bırakılan güvenlik açığı “SQL Injection” yani veritabanı zehirleme işlemi
Peki bu açık ne işe yarar?
SQL Injection açığı sitenin veritabanına sızıp verilerin çalınmasına yol açar bu sitenin admin yani yönetim bilgileride olabilir sitedeki gizli belgelerde olabilir
Peki bu açık nasıl uygulanıyor?
Bu açık php ile veritabanında sorgu yaparken string uygulaması ile sql’de örnek olarak yazılar veritabanında arama yaparken o aramayı durdurup farklı bir veritabanına geçip orada ki verileri göstermesidir kısaca php ile sitenizde arama bölümü yaptınız ara.php?s=yazi fakat kişi sql injection işlemi uygulayarak yazı değilde farklı kodlar ile sitenin yönetim bilgilerini aramış gibi gösterip şifrelerinizi çalabiliyor
Peki bu açığı nasıl önleriz?
Bunun için kısa bir fonksiyon geliştirdik bu fonksiyon ile aldığınız verileri sorguya dökebileceksiniz
<?php
function koruma($k) {
if(preg_match("/[\-]{2,}|[;]|[']|[\\\*]/",$k)) {
echo '';
exit;
} else {
echo '';
}
}
koruma($_GET["ara"]);
?>
Fonksiyon şu şekilde bir işlem uyguluyor veride sql injection karakterleri var ise yani ‘ gibi karakterler var ise exit; atarak tüm işlemi sonlandırıyor
koruma($veri); şeklinde sorgu yapabilirsiniz.