php检测图片是否含有木马的方法
墨初 编程开发 1094阅读
在网上发现了一个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') ? '图片正常' : '图片异常'; // 图片正常