某商城代码审计
字数 853 2025-08-07 08:22:07
某商城代码审计教学文档
1. 审计概述
本次审计针对某商城系统的安全漏洞进行代码审计,主要发现以下关键安全问题:
- 后台登录绕过漏洞
- SQL注入漏洞
- 文件上传漏洞
- 权限校验不严问题
2. 漏洞详细分析
2.1 后台登录绕过漏洞
漏洞文件: admin.php
漏洞分析:
- 代码中直接使用
$_SESSION['admin']判断管理员登录状态 - 未对session进行严格校验,可通过伪造session直接访问后台
- 关键缺陷代码:
if(!isset($_SESSION['admin'])){
header("Location: login.php");
exit;
}
修复建议:
- 增加session校验机制
- 使用token验证
- 记录登录IP和设备信息
2.2 SQL注入漏洞
漏洞文件: goods.php
漏洞分析:
- 直接拼接用户输入到SQL语句中
- 未使用预处理语句
- 关键缺陷代码:
$id = $_GET['id'];
$sql = "SELECT * FROM goods WHERE id=".$id;
$result = mysql_query($sql);
修复建议:
- 使用PDO或mysqli预处理语句
- 对输入参数进行严格过滤
- 使用白名单机制验证输入
2.3 文件上传漏洞
漏洞文件: upload.php
漏洞分析:
- 仅检查了文件扩展名,未检查文件内容
- 未限制上传目录的执行权限
- 关键缺陷代码:
$file_ext = strtolower(pathinfo($_FILES['file']['name'], PATHINFO_EXTENSION));
if(in_array($file_ext, ['jpg','png','gif'])){
move_uploaded_file($_FILES['file']['tmp_name'], 'uploads/'.$_FILES['file']['name']);
}
修复建议:
- 重命名上传文件
- 检查文件MIME类型
- 限制上传目录的脚本执行权限
- 使用随机文件名
3. 权限校验问题
漏洞文件: admin/order.php
漏洞分析:
- 仅在前端隐藏了管理功能,后端未做权限校验
- 普通用户可通过直接访问URL操作管理功能
- 关键缺陷代码:
// 缺少权限校验
if($_GET['action'] == 'delete'){
delete_order($_GET['id']);
}
修复建议:
- 前后端都进行权限校验
- 实现RBAC权限控制系统
- 记录管理员操作日志
4. 其他安全问题
- XSS漏洞:用户输入未过滤直接输出到页面
- CSRF漏洞:缺少token防护机制
- 信息泄露:错误信息暴露系统路径
5. 安全加固建议
- 对所有输入进行过滤和验证
- 使用预处理语句防止SQL注入
- 实现完善的权限控制系统
- 启用HTTPS加密传输
- 定期进行安全审计和代码审查
6. 审计总结
本次审计发现该商城系统存在多处严重安全漏洞,建议开发者按照修复建议进行全面安全加固,特别是对用户输入的处理和权限校验机制需要重点改进。