一段检测图片恶意代码的php函数


查找相关文章:php

一段检测图片恶意代码的php函数

主要替换一php特征代码和javascript特征代码

// 匹配16进制中的 <% ( ) %>
// 匹配16进制中的 <? ( ) ?>
// 匹配16进制中的 <script | /script> 大小写亦可
function checkHex() {
    $return = true;
    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);
        if (preg_match("/(3c25.*?28.*?29.*?253e)|(3c3f.*?28.*?29.*?3f3e)
        |(3C534352495054)|(2F5343524950543E)|(3C736372697074)|(2F7363726970743E)/is", $hexCode)){
            //有恶意代码
            $return = false;
        }
    }
    return $return;
}

将php 或者 html中的特殊代码转换成16进制,把图片内容转换成16进制

然后查找是否有匹配的内容