zoukankan      html  css  js  c++  java
  • 关于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';
        }
  • 相关阅读:
    创意吃鱼法
    雅礼上课
    坏掉的项链Broken Necklace
    2018-04-02练习
    【11月12日】Hadoop架构
    【11月10日】Redis 主从复制技术
    【11月10日】Redis 缓存系统常见问题及解决方案
    【11月9日】Redis 持久化
    【11月7日】Redis核心对象和数据类型
    【11月7日】Redis简介
  • 原文地址:https://www.cnblogs.com/sz-xioabai/p/11663395.html
Copyright © 2011-2022 走看看