3 Temmuz 2012 Salı

PHP - SQL Injectionu Tek Kod Parçasıyla Engelleme

Her scriptimde ve her açıklı olan scriptte kullandığım ve kullanılmasını önerdiğim kodu paylaşıyorum. Bu kod ile sql injection tamamen engellenir.




function clearMethod($mVar){
    if(is_array($mVar)){
        foreach($mVar as $gVal => $gVar){
            if(!is_array($gVar)){
                    $mVar[$gVal] = htmlspecialchars(strip_tags(urldecode(mysql_escape_string(addslashes(stripslashes(stripslashes(trim(htmlspecialchars_decode($gVar)))))))));  // -> Dizi olmadığını fark edip temizledik.
            }else{
                    $mVar[$gVal] = clearMethod($gVar);
            }
        }
    }else{
        $mVar = htmlspecialchars(strip_tags(urldecode(mysql_escape_string(addslashes(stripslashes(stripslashes(trim(htmlspecialchars_decode($mVar))))))))); // -> Dizi olmadığını fark edip temizledik.
    }
    return $mVar;
   

}

// Kullanım

$_GET = clearMethod($_GET); // -> GET verilerini temizledik.
$_POST = clearMethod($_POST); // -> POST verilerini temizledik.
$_SESSION = clearMethod($_SESSION); // -> SESSION verilerini temizledik.
$_COOKIE = clearMethod($_COOKIE); // -> COOKIE verilerini temizledik.
?>

2 yorum:

Adsız dedi ki...

Merhaba hocam bunu php içerisinde nasıl kullanacağız, yoksa sadece bir fonksiyon sayfası oluşturup onu her sayfaya mı include edeceğiz

Unknown dedi ki...

Merhabalar, söylediğiniz gibi fonksiyon sayfası oluşturup onu her php dosyasına include edebilirsiniz. Ben şu şekilde kullanırdım, config.php yani mysql bağlantı dosyamın içinde en üste veya bağlantıyı yaptıktan sonra (emin olamıyorum yaklaşık 1 2 yıldır php kod bile görmüyorum, iyice unuttum :)) kopyalıyorum. Sql injection tehlikesi olan tüm sayfalara kesinlikle include edilmeli.