Fungsi Untuk Check Code Bahaya Di Dalam File

Sekedar fungsi untuk check bad code didalam file

Berikut saya dapatkan fungsi untuk memfilter file saat manajemen file, misalnya saat kita menyediakan layanan upload file ke server kita. Fungsi ini berfungsi men check apakah didalam file yg di upload mengandung kode-kode berbahaya yang mungkin bisa dimanfaatkan oleh pihak yang kurang bertanggung jawab untuk masuk ke server kita.

<?php

/**
* A simple function to check file from bad codes.
*
* @param (string) $file - file path.
* @author Yousef Ismaeil - Cliprz[at]gmail[dot]com.
*/
function is_clean_file ($file)
{
    if (file_exists($file))
    {
        $contents = file_get_contents($file);
    }
    else
    {
        exit($file." Not exists.");
    }

    if (preg_match('/(base64_|eval|system|shell_|exec|php_)/i',$contents))
    {
        return true;
    }
    else if (preg_match("#&\#x([0-9a-f]+);#i", $contents))
    {
        return true;
    }
    elseif (preg_match('#&\#([0-9]+);#i', $contents))
    {
        return true;
    }
    elseif (preg_match("#([a-z]*)=([\`\'\"]*)script:#iU", $contents))
    {
        return true;
    }
    elseif (preg_match("#([a-z]*)=([\`\'\"]*)javascript:#iU", $contents))
    {
        return true;
    }
    elseif (preg_match("#([a-z]*)=([\'\"]*)vbscript:#iU", $contents))
    {
        return true;
    }
    elseif (preg_match("#(<[^>]+)style=([\`\'\"]*).*expression\([^>]*>#iU", $contents))
    {
        return true;
    }
    elseif (preg_match("#(<[^>]+)style=([\`\'\"]*).*behaviour\([^>]*>#iU", $contents))
    {
        return true;
    }
    elseif (preg_match("#</*(applet|link|style|script|iframe|frame|frameset|html|body|title|div|p|form)[^>]*>#i", $contents))
    {
        return true;
    }
    else
    {
        return false;
    }
}
?>


About Author

Imran Nababan

System Analyst at Game Industry


Comment & Discussions

  • Enos Maraya
    makasih mas atas scriptnya :)

  • Cecep Yusuf
    Bermanfaat banget mas snippet ini, terutama buat para developer yang "trauma" akan hekel hekel via upload file.. thank you ya :)

  • Please LOGIN before if you want to give the comment.