全部
常见问题
产品动态
精选推荐

【PRO3.0.2】通过api/products接口进行sql注入的问题

管理 管理 编辑 删除

使用api/products接口的selectId参数进行sql注入

路径文件: 1、app/services/product/product/StoreProductServices.php

                  2、app/common.php

                  3、app/Request.php

修复方法:

1、app/services/product/product/StoreProductServices.php 文件按下图截图(修改后截图)修改

713f9202407091720249614.png


if (isset($where['productId']) && $where['productId'] != '') {
    $where['ids'] =  is_string($where['productId']) ? stringToIntArray($where['productId']):$where['productId'];
    $where['ids'] = array_unique(array_map('intval', $where['ids']));
    unset($where['productId']);
}
Copy

2、在app/common.php文件中最后增加下面代码


if (!function_exists('filter_str')) {
        /**
         * 过滤字符串敏感字符
         * @param $str
         * @return array|mixed|string|string[]|null
         */
        function filter_str($str)
        {
            $rules = [
                '/\.\./', // 禁用包含 ../ 的参数
                '/\<\?/', // 禁止 php 脚本出现
                '/\bor\b.*=.*/i', // 匹配 'or 1=1',防止 SQL 注入(注意边界词 \b 和不区分大小写 i 修饰符)
                '/(select[\s\S]*?)(from|limit)/i', // 防止 SQL 注入
                '/(union[\s\S]*?select)/i', // 防止 SQL 注入
                '/(having|updatexml|extractvalue)/i', // 防止 SQL 注入
                '/sleep\((\s*)(\d*)(\s*)\)/i', // 防止 SQL 盲注
                '/benchmark\((.*)\,(.*)\)/i', // 防止 SQL 盲注
                '/base64_decode\(/i', // 防止 SQL 变种注入
                '/(?:from\W+information_schema\W)/i', // 注意这里的 (?:...) 是不合法的,应该是 (?:...) 表示非捕获组,但通常我们不需要这个
                '/(?:current_|user|database|schema|connection_id)\s*\(/i', // 防止 SQL 注入(注意去掉了不必要的 (?:...))
                '/(?:etc\/\W*passwd)/i', // 防止窥探 Linux 用户信息
                '/into(\s+)(?:dump|out)file\s*/i', // 禁用 MySQL 导出函数
                '/group\s+by.+\(/i', // 防止 SQL 注入
                '/(?:define|eval|file_get_contents|include|require|require_once|shell_exec|phpinfo|system|passthru|preg_\w+|execute|echo|print|print_r|var_dump|(fp)open|alert|showmodaldialog)\(/i', // 禁用 webshell 相关某些函数
                '/(gopher|doc|php|glob|file|phar|zlib|ftp|ldap|dict|ogg|data)\:\/\//i', // 防止一些协议攻击(注意协议后的三个斜杠)
                '/\$_(GET|POST|COOKIE|FILES|SESSION|ENV|GLOBALS|SERVER)\[/i', // 禁用一些内置变量,注意 PHP 变量名通常是大写的
                '/<(iframe|script|body|img|layer|div|meta|style|base|object|input)/i', // 防止 XSS 标签植入
                '/(onmouseover|onerror|onload|onclick)\=/i', // 防止 XSS 事件植入
                '/\|\|.*?(?:ls|pwd|whoami|ll|ifconfig|ipconfig|&&|chmod|cd|mkdir|rmdir|cp|mv)/i', // 防止执行 shell(注意去掉了不合适的 ifconfog)
                '/\sand\s+.*=.*/i' // 匹配 and 1=1
            ];
            if (filter_var($str, FILTER_VALIDATE_URL)) {
                $url = parse_url($str);
                if (!isset($url['scheme'])) return $str;
                $host = $url['scheme'] . '://' . $url['host'];
                $str = $host . preg_replace($rules, '', str_replace($host, '', $str));
            } else {
                $str = preg_replace($rules, '', $str);
            }
            return $str;
        }
    }
    Copy

3.用附件替换app/Request.php文件

4.重启服务


请登录后查看

小码二开 最后编辑于2024-07-23 15:16:55

快捷回复
回复
回复
回复({{post_count}}) {{!is_user ? '我的回复' :'全部回复'}}
排序 默认正序 回复倒序 点赞倒序

{{item.user_info.nickname ? item.user_info.nickname : item.user_name}} LV.{{ item.user_info.bbs_level }}

作者 管理员 企业

{{item.floor}}# 同步到gitee 已同步到gitee {{item.is_suggest == 1? '取消推荐': '推荐'}}
{{item.is_suggest == 1? '取消推荐': '推荐'}}
沙发 板凳 地板 {{item.floor}}#
{{item.user_info.title || '暂无简介'}}
附件

{{itemf.name}}

{{item.created_at}}  {{item.ip_address}}
{{item.like_count}}
{{item.showReply ? '取消回复' : '回复'}}
删除
回复
回复

{{itemc.user_info.nickname}}

{{itemc.user_name}}

回复 {{itemc.comment_user_info.nickname}}

附件

{{itemf.name}}

{{itemc.created_at}}
{{itemc.like_count}}
{{itemc.showReply ? '取消回复' : '回复'}}
删除
回复
回复
查看更多
808
{{like_count}}
{{collect_count}}
添加回复 ({{post_count}})

相关推荐

快速安全登录

使用微信扫码登录
{{item.label}} 加精
{{item.label}} {{item.label}} 板块推荐 常见问题 产品动态 精选推荐 首页头条 首页动态 首页推荐
取 消 确 定
回复
回复
问题:
问题自动获取的帖子内容,不准确时需要手动修改. [获取答案]
答案:
提交
bug 需求 取 消 确 定

微信登录/注册

切换手机号登录

{{ bind_phone ? '绑定手机' : '手机登录'}}

{{codeText}}
切换微信登录/注册
暂不绑定
CRMEB客服

CRMEB咨询热线 咨询热线

400-8888-794

微信扫码咨询

CRMEB开源商城下载 源码下载 CRMEB帮助文档 帮助文档
返回顶部 返回顶部
CRMEB客服