關於PHP 上傳文件 如何防止圖片木馬


一、來源

1、圖片馬的生成:

 

使用CMD制作一句話木馬。
參數/b指定以二進制格式復制、合並文件; 用於圖像類/聲音類文件
參數/a指定以ASCII格式復制、合並文件。用於txt等文檔類文件
copy 1.jpg/b+1.php 2.jpg
//意思是將1.jpg以二進制與1.php合並成2.jpg
那么2.jpg就是圖片木馬了。

 

 

二、上傳圖片過濾圖片馬的代碼

 

    // 檢測上傳圖片是否包含有非法代碼
    public function check_illegal($image)
    {
        if (file_exists($image)) {
            $resource = fopen($image, 'rb');
            $fileSize = filesize($image);
            fseek($resource, 0);
            if ($fileSize > 512) { // 取頭和尾
                $hexCode = bin2hex(fread($resource, 512));
                fseek($resource, $fileSize - 512);
                $hexCode .= bin2hex(fread($resource, 512));
            } else { // 取全部
                $hexCode = bin2hex(fread($resource, $fileSize));
            }
            fclose($resource);
            /* 匹配16進制中的 <% ( ) %> */
            /* 匹配16進制中的 <? ( ) ?> */
            /* 匹配16進制中的 <script | /script> 大小寫亦可*/
            if (preg_match("/(3c25)|(3c3f.*?706870)|(3C534352495054)|(2F5343524950543E)|(3C736372697074)|(2F7363726970743E)/is", $hexCode)) {
                return 'false';
            }
        }
        return 'true';
    }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM