php检测图片是否含有木马的方法
墨初 编程开发 1997阅读
在网上发现了一个php脚本代码来检测图片中是否含有木马病毒的方法,虽然不能彻底的检测到图片是否有木马,但胜在与无,在安全方面还是有点用处的。
php检测图片是否有木马的方法
php检测图片代码是否有木马,主要是先将图片转为十六进制,然后再用正规匹配一些木马的代码即可。
例:
/**
* @name 检测图片是否含有木马
* @param string $image 图片在服务器上的存放路径
*
* @return bool true 图片正常 false 图片异常
* @host https://www.73so.com
*/
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);
//备用 "/(3c25.*?28.*?29.*?253e)|(3c3f.*?28.*?29.*?3f3e)|(3C534352495054)|(2F5343524950543E)|(3C736372697074)|(2F7363726970743E)/is"
// 匹配一些特征被成转十六进制的字符,比如 <? 等
if (preg_match("/(3c25)|(3c3f.*?706870)|(3C534352495054)|(2F5343524950543E)|(3C736372697074)|(2F7363726970743E)/is", $hexCode)) {
return 'false';
}
}
return 'true';
}函数使用方法
echo check_illegal('mochu.jpg') ? '图片正常' : '图片异常';
// 图片正常