JAVA代审之启航电商ERP2.0系统
字数 1398 2025-08-29 08:30:12
JAVA代审之启航电商ERP2.0系统安全审计报告
项目介绍
启航电商ERP系统是一个轻量级现代化的电商业务处理系统,具有以下特点:
- 专注核心订单处理业务,去除大部分不常用功能
- 开放核心API,支持开发者个性化业务需求
- 2.0版本是完整开箱即用的开源电商ERP系统
- 支持多平台多店铺订单、售后、库存等电商核心业务处理
- 兼容平台:淘宝、京东、拼多多、抖店、微信小店等
环境搭建
后端环境配置
-
获取项目:
- 项目地址:https://gitee.com/qiliping/qihangerp
- 下载到本地后等待Maven依赖加载完成
-
系统要求:
- JDK版本:17
- MySQL版本:8(其他版本需要修改SQL文件编码)
- Redis:需要配置
-
数据库配置:
- 修改配置文件:
qihangerp-master\api\src\main\resources\application.yaml - 创建数据库并导入SQL文件:
docs/qihang-oms.sql
- 修改配置文件:
-
启动后端:
- 配置完成后直接启动
前端环境配置
-
进入前端目录:
cd vue -
安装依赖:
npm install- Node.js版本要求:22.14.0
-
修改配置:
- 修改
qihangerp-master\vue\nginx.conf文件,设置对应后端地址
- 修改
-
启动前端:
npm run dev
代码审计
权限控制分析
-
JWT认证过滤器:
- 文件位置:
qihangerp-master\core\security\src\main\java\cn\qihangerp\security\JwtAuthenticationTokenFilter.java - 使用
contains方法进行路由检查 - 无法通过目录穿越(如
/login/../xxxx)绕过 - 整个项目采用前后端分离架构,使用JWT校验
- 未授权访问漏洞风险较低
- 文件位置:
-
越权测试:
- 创建普通账户,登录获取token进行测试
SQL注入漏洞分析
-
技术栈判断:
- 使用MyBatis作为ORM框架
-
潜在注入点查找:
- 全局搜索关键词
${(MyBatis中可能导致SQL注入的写法)
- 全局搜索关键词
-
漏洞定位:
- 发现一处使用
${}而非#{}的参数拼接 - 调用链:Mapper → Service → Controller
- 发现一处使用
-
注入测试:
- 目标路由:
/api/sys-api/system/role/list - 需要先登录获取有效token
- 使用
order by测试字段数 - 尝试联合查询
- 目标路由:
-
注入限制:
- 某些字段(如
u.login_date和u.create_time)为时间格式 - 直接查询会导致SQL语句报错(类型不匹配)
- 需要将这些字段设置为
null才能正常回显
- 某些字段(如
安全建议
-
SQL注入修复:
- 将MyBatis中的
${}替换为#{}预处理方式 - 对必须使用
${}的情况进行严格过滤
- 将MyBatis中的
-
权限控制增强:
- 虽然当前权限控制较为严格,但仍建议:
- 增加细粒度的权限控制
- 实现基于角色的访问控制(RBAC)
- 虽然当前权限控制较为严格,但仍建议:
-
输入验证:
- 对所有用户输入进行严格验证和过滤
- 实现参数化查询
-
日志监控:
- 增强SQL日志记录
- 监控异常查询行为
总结
启航电商ERP2.0系统整体安全性较好,但仍存在SQL注入等安全隐患。开发团队应重点关注MyBatis中${}的使用,并加强输入验证和权限控制机制。通过本次审计发现的漏洞,可以有针对性地提升系统安全性。