文章2

🕒 2026-03-23 22:17 👁 6 次阅读

# 全面代码审计(重点检查新增功能)


请对现有发卡网站(CardShop)的全部代码进行深度审计,重点检查以下**新增加的功能**是否存在逻辑错误、安全漏洞或潜在 bug。同时整体检查已有功能是否因新增代码而受影响。


## 一、新增功能审计范围


### 1. 订单查询页面改造(缓存查询 + 手动查询)

- 支付成功后写入 localStorage(`pay_success.php`):是否在正确的时机写入?订单号和密码是否正确获取?编码方式是否合理?是否可能因为用户关闭页面或脚本错误导致写入失败?

- 订单查询页面(`order_query.php`):

 - 是否取消了自动查询(页面加载时不自动发起请求)?

 - 缓存区域是否正确检测 localStorage 中是否存在有效订单(24小时内)?时间判断逻辑是否正确(本地时间 vs 服务器时间)?

 - “使用已保存订单”按钮点击后,AJAX 请求是否正确发送到后端接口?请求参数是否正确?是否处理了加载状态和错误反馈?

 - 手动查询表单的“立即查询”和“重置”功能是否正常?手动查询是否也调用了相同的后端接口?

 - 后端查询接口(如 `api/query_order.php`):

   - 是否验证订单存在、密码哈希匹配、支付时间在24小时内?

   - 返回的 JSON 结构是否清晰?错误码是否合理?

   - 是否使用 PDO 预处理防止 SQL 注入?

   - 是否对输出进行了适当的转义?

 - 两种查询方式是否共用同一套验证逻辑?是否存在重复代码或逻辑不一致?

 - 当 localStorage 中的订单过期时,是否正确清除缓存并提示用户?

 - 当手动查询的订单与缓存订单相同时,是否会出现状态冲突?


### 2. 后台功能增强

- 后台 Logo 上传:

 - 上传功能是否限制文件类型和大小?是否重命名文件?存储目录是否可写且禁止 PHP 解析?

 - 上传后是否立即显示预览图(前端预览)?保存后是否正确更新 settings 表?

 - 前端是否根据上传的 Logo 路径正确显示?

- 商品分类别名(伪静态):

 - 数据库是否添加了 `alias` 字段?是否有唯一索引?

 - 后台分类管理是否支持编辑别名?是否自动生成唯一别名?

 - 前台商品列表页分类链接是否已改为使用别名?URL 重写规则(.htaccess 或 Nginx)是否配置正确?

 - 是否兼容旧的 `?category_id=` 参数?

- 站点设置:

 - 站点名称、描述、SEO 设置是否正确保存和读取?

 - 是否对所有用户输入进行了过滤和转义?

- 商品详情页合并字段(去掉重复的“商品详情介绍”):

 - 数据库字段是否已统一?后台编辑页面是否只保留一个富文本编辑器?

 - 前台详情页是否只显示一个商品详情区域?

- 其他后台优化(上传图片尺寸提示、即时预览、排版美化)是否实现且无误?


### 3. 其他新增或修改

- 顶部公告栏、底部免责声明样式调整(宽度对齐、移动端适配)是否在所有页面生效?

- 分类介绍区域与商品卡片合并背景块是否实现?是否存在重复或样式冲突?

- 订单查询 24 小时限制:是否在所有查询路径(缓存查询、手动查询)中都正确判断?未支付的订单是否允许查询?

- 抽奖功能的免费/付费模式切换是否正常?后台设置是否生效?

- 安装脚本(如有一键安装)是否安全且能正确初始化?


## 二、审计要点


- **逻辑正确性**:功能是否符合预期,边界条件是否处理(如空数据、超时、网络错误)。

- **安全性**:

 - SQL 注入(所有查询是否使用预处理)

 - XSS(用户输入输出是否转义)

 - CSRF(后台写操作是否有 token)

 - 文件上传安全(类型、大小、路径)

 - 支付回调安全(验签、防重放、事务)

 - 敏感信息暴露(配置文件、错误信息)

- **性能**:数据库查询是否有索引,是否避免 N+1 查询。

- **兼容性**:不同浏览器(Chrome, Firefox, Safari)、移动端、HTTPS 环境。


## 三、输出要求


1. 按模块列出发现的问题(如果有),每个问题包括:位置、描述、风险等级(高/中/低)、修复建议(代码级)。

2. 如果没有问题,请确认各功能模块运行正常,并给出测试通过的总结。

3. 提供最终代码质量评分(满分10分)及改进建议。


请开始全面审计,确保所有新功能稳定可靠,无隐藏 bug。


← 返回文章列表
分享: 微博