Acceptance Task Description(二次技术审计验收任务书)
该 DOCX 包含不完整的 Office 元数据关系,已使用兼容模式恢复正文和媒体。
项目二次全量技术审计、风险排查与上线验收任务书
一、任务目标
请对当前整个项目进行一次完整的【二次全量技术审计 + 功能验收 + 安全排查 + 架构检查 + 部署可行性检查】。
本次任务不是简单代码审查,也不是只检查语法错误。
需要从:
前端
后端
API
数据库
用户系统
管理员系统
权限体系
配置体系
UI组件
路由
字体
静态资源
依赖
构建
性能
安全
日志
异常处理
数据备份
本地保障
部署
运维
AI接口(如存在)
等层面,对整个项目进行系统性检查。
最终目标不是:
“代码看起来可以运行”。
而是判断:
当前项目是否具备稳定运行、持续维护、自由修改、安全部署和正式上线的条件。
二、最高执行原则
以下规则必须严格遵守。
1. 本轮优先检查,不要擅自大规模修改
本轮首先完成:
扫描 → 检查 → 验证 → 记录 → 输出审计报告。
未经必要,不要直接重构整个项目。
不得在没有说明的情况下:
删除代码
删除文件
删除数据库
修改数据库结构
更换框架
更换主要依赖
修改业务逻辑
重写页面
重写配置
批量格式化整个项目
删除用户数据
删除项目资源
发现问题,先记录。
2. 不允许“默认正常”
凡没有实际检查的内容必须标记:
【未检查】
凡检查了代码但没有实际运行验证:
【静态检查通过,运行未验证】
凡进行了真实运行验证:
【实际验证通过】
凡因环境、权限、依赖或外部服务无法验证:
【无法验证】
并说明原因。
禁止使用以下模糊结论:
应该没问题
看起来正常
理论上可以
暂未发现明显问题
基本正常
预计可运行
代替实际验证。
三、问题严重等级统一标准
所有发现的问题必须进行分级。
P0 / 致命
可能导致:
项目无法启动
无法部署
数据库损坏
数据大规模泄露
管理员权限泄露
任意用户获得管理员权限
密钥严重暴露
核心业务完全不可用
结论:
【禁止上线】
P1 / 高风险
可能导致:
核心功能失效
用户登录异常
API越权
用户数据泄露
高概率攻击风险
严重性能问题
生产环境无法正常使用
构建失败
原则上:
【修复后方可上线】
P2 / 中风险
可能导致:
部分功能异常
部分设备兼容异常
可维护性下降
重复代码
较高耦合
错误处理不足
局部性能问题
允许根据实际情况决定是否阻断上线。
P3 / 低风险
主要包括:
代码规范
可读性
轻微性能
UI一致性
未来维护风险
非关键优化
不阻断上线。
四、第一阶段:项目全局盘点
首先不要修改代码。
先读取整个项目目录。
需要识别:
项目类型
前端框架
后端框架
数据库
包管理器
构建工具
运行方式
部署方式
第三方服务
AI服务
登录系统
管理员系统
API体系
静态资源体系
字体体系
配置体系
日志体系
缓存体系
测试体系
数据备份机制
然后输出:
《项目技术结构概览》
包括:
前端: ↓
后端: ↓
数据库: ↓
API: ↓
认证: ↓
管理员: ↓
第三方服务: ↓
部署: ↓
外部依赖: ↓
五、项目目录检查
检查整个目录。
识别:
核心代码
配置文件
构建文件
静态资源
字体
图片
脚本
数据文件
数据库文件
日志
测试代码
Demo
临时文件
备份文件
废弃文件
重复文件
空文件
未引用文件
重点寻找:
temp
tmp
old
backup
bak
copy
test
demo
debug
dev
example
unused
deprecated
检查是否存在类似:
index-old.html
app-copy.js
config-backup.json
test-api.js
demo-login.html
server-old.js
等遗留文件。
判断它们是否可能:
被错误引用
被打包
被部署
暴露敏感信息
与正式代码冲突
六、架构与代码耦合检查
检查整个项目是否存在:
高度耦合
循环依赖
模块强依赖
跨层直接调用
重复业务逻辑
重复组件
重复请求代码
重复配置
巨型文件
巨型组件
巨型函数
全局变量污染
魔法数字
魔法字符串
隐式依赖
修改一处导致多处异常
特别检查:
UI是否直接控制后端逻辑。
组件是否直接写死API。
组件是否直接读数据库。
业务代码是否写死页面结构。
样式是否与业务逻辑强绑定。
配置是否散落在多个文件。
输出:
《高耦合模块清单》
包括:
模块:
依赖对象:
耦合程度:
问题:
影响:
建议:
七、硬编码全局扫描
扫描整个项目。
重点搜索:
localhost
192.0.2.10
192.168.
http://
https://
3000
3001
5173
8080
8000
5000
Windows绝对路径
C:
D:
用户目录
固定服务器地址
固定域名
固定API路径
固定文件路径
固定字体路径
固定图片路径
固定管理员账号
固定测试账号
固定密码
同时搜索:
API_KEY
apikey
SECRET
secret
TOKEN
token
PASSWORD
password
PRIVATE_KEY
ACCESS_KEY
DATABASE_URL
DB_PASSWORD
AUTH_SECRET
JWT_SECRET
OPENAI_API_KEY
对每个硬编码输出:
文件:
位置:
硬编码内容:
是否合理:
风险:
是否应该配置化:
推荐修改方式:
八、配置中心检查
检查项目是否具有统一配置体系。
例如:
.env
.env.example
.env.development
.env.production
config/
config.json
settings.json
constants
环境变量
确认:
开发环境配置
测试环境配置
生产环境配置
能够相互分离。
检查是否能够做到:
换域名不改业务代码。
换端口不改业务代码。
换API地址不改组件。
换数据库不改核心代码。
换字体不改大量CSS。
换图片资源路径不改业务逻辑。
九、前端页面全量检查
列出项目所有页面。
逐个检查。
例如:
首页
入口页
登录页
注册页
个人中心
设置页
管理员页
404页
错误页
功能页面
详情页面
编辑页面
搜索页面
每个页面检查:
是否能进入
是否正常加载
是否白屏
是否闪屏
是否错位
是否丢样式
是否加载异常
是否出现错误组件
是否缺失资源
是否出现未替换占位符
是否出现测试文字
是否出现调试内容
十、所有UI组件检查
枚举所有可交互组件。
包括:
Button
Link
Input
Checkbox
Radio
Select
Dropdown
Modal
Dialog
Drawer
Tabs
Tooltip
Menu
Navbar
Sidebar
Card
Form
Upload
Download
Search
Pagination
Toast
Notification
Loading
ErrorBoundary
逐项确认:
正常状态
Hover
Active
Focus
Disabled
Loading
Error
Empty
成功状态
失败状态
检查:
按钮是否点得动。
是否存在假按钮。
是否点击无反应。
是否触发错误事件。
是否点击两次产生重复请求。
是否快速连续点击产生重复数据。
十一、页面跳转与路由检查
列出完整路由表。
包括:
URL
页面
权限
跳转目标
检查:
所有链接
所有按钮跳转
菜单
Logo
返回
下一步
登录后跳转
退出后跳转
管理员跳转
检查:
404
错误路径
非法路径
刷新页面
浏览器前进
浏览器后退
直接输入URL
打开新标签
确认不存在:
死链接
空链接
错误路由
跳转循环
重定向死循环
历史记录异常
刷新后404
十二、字体系统专项检查
全面检查当前项目字体。
目标:
字体必须能够未来随时整体替换,而无需逐个页面修改。
检查:
font-family
font-size
font-weight
line-height
letter-spacing
@font-face
@import
Google Fonts
本地字体
字体CDN
检查是否大量存在:
font-family: xxx;
散落在各组件。
检查是否应该通过:
CSS Variables
Theme
Design Token
统一字体配置
控制。
例如:
–font-primary
–font-display
–font-mono
检查:
字体路径是否硬编码。
字体名是否硬编码。
字体加载是否重复。
字体是否重复请求。
字体加载失败是否有fallback。
最终判断:
是否能够通过修改一个配置文件实现全站换字体。
如果不能:
标记风险。
十三、全局设计系统检查
检查:
颜色
字号
间距
圆角
边框
阴影
动画
按钮
表单
卡片
布局
是否存在统一Design Token。
例如:
–color-primary
–color-bg
–spacing-md
–radius-lg
检查是否大量出现:
#FFFFFF
#000000
16px
24px
8px
12px
等散落式重复硬编码。
区分:
合理硬编码
与
应配置化硬编码。
十四、CSS检查
检查:
语法错误
无效CSS
重复CSS
失效选择器
未引用CSS
选择器冲突
!important滥用
过高优先级
内联样式滥用
响应式冲突
z-index冲突
动画冲突
变量未定义
特别检查CSS中是否存在:
Sass语法写入普通CSS
Less语法写入CSS
嵌套语法无编译支持
变量写法错误
十五、JavaScript / TypeScript检查
检查:
语法错误
类型错误
Promise未捕获
await错误
null
undefined
未定义变量
重复事件监听
未清理监听器
setInterval未清理
setTimeout未清理
内存泄漏
无限循环
状态竞争
异步竞争
重复请求
TypeScript额外检查:
any滥用
ts-ignore
类型断言滥用
类型定义缺失
十六、Console检查
实际启动项目后检查浏览器Console。
记录:
Error
Warning
Promise rejection
Resource error
Network error
Deprecated API
Mixed Content
CORS
任何Console Error不得直接忽略。
十七、静态资源检查
检查:
图片
SVG
Icon
视频
音频
字体
JSON
CSS
JS
检查:
404资源
重复资源
未使用资源
超大图片
错误文件格式
无压缩资源
错误路径
绝对路径
生产构建后资源路径错误
十八、响应式检查
检查以下宽度:
320
375
390
430
768
1024
1280
1366
1440
1920
以及超宽屏。
检查:
元素溢出
内容遮挡
横向滚动
导航异常
文字截断
图片变形
弹窗超屏
按钮不可点击
固定定位异常
十九、浏览器兼容
至少检查:
Chrome
Edge
Firefox
Safari兼容风险
检查:
CSS兼容
JS API
字体
动画
WebSocket
文件上传
文件下载
Clipboard
LocalStorage
IndexedDB
二十、可访问性基础检查
检查:
按钮是否可键盘操作。
Tab顺序。
Focus状态。
图片alt。
表单label。
颜色对比。
按钮语义。
ARIA。
二十一、前后端接口映射检查
列出:
【前端调用接口】
和
【后端实际提供接口】
逐一对照。
形成接口映射表:
前端调用:
请求方法:
后端接口:
是否存在:
参数是否一致:
返回结构是否一致:
认证是否一致:
结果:
检查:
GET
POST
PUT
PATCH
DELETE
是否一致。
避免出现:
前端POST
后端GET
或:
前端/api/users
后端/api/user
之类错误。
二十二、端口检查
检查所有端口。
列出:
前端开发端口
后端端口
数据库端口
WebSocket端口
代理端口
Docker端口
生产服务端口
检查是否:
重复占用
硬编码
配置不一致
前端请求错误端口
代理错误
生产环境仍指向开发端口
二十三、API全量测试
列出所有API。
逐个验证。
每个接口测试:
正常请求
空参数
缺失参数
错误类型
非法参数
超长参数
特殊字符
重复请求
快速连续请求
未登录请求
无权限请求
过期Token
错误Token
检查返回:
200
201
400
401
403
404
409
422
429
500
是否合理。
二十四、API异常测试
模拟:
API不可用
请求超时
网络断开
DNS异常
第三方服务失败
返回错误JSON
返回空数据
返回超大数据
服务器500
前端必须合理处理。
禁止:
白屏
崩溃
无限Loading
无限重试
大量重复请求
二十五、API限流检查
确认是否存在:
IP限流
账号限流
设备限流
接口限流
登录限流
注册限流
验证码限流
上传限流
AI接口限流
检查:
429处理
Retry-After
是否可以绕过限流。
二十六、用户注册系统检查
如存在注册功能。
检查:
用户名
邮箱
手机号
密码
验证码
重复账号
非法输入
检查:
重复注册
批量注册
恶意注册
弱密码
超长输入
二十七、用户登录系统检查
验证:
正确账号+正确密码
正确账号+错误密码
错误账号
空账号
空密码
锁定账号
禁用账号
检查:
登录成功状态
登录失败状态
错误提示
登录频率
Session
Cookie
Token
二十八、密码系统检查
确认:
密码不可明文保存。
确认使用安全Hash。
检查:
密码日志泄露
密码API返回
密码前端缓存
密码LocalStorage
检查:
修改密码
重置密码
旧密码验证
修改密码后旧Token处理
二十九、Token / Session检查
如果使用JWT。
检查:
签名算法
JWT_SECRET
Token有效期
Refresh Token
Token存储
Token撤销
Token重放
过期Token
伪造Token
如果Cookie认证:
检查:
HttpOnly
Secure
SameSite
Domain
Path
过期时间
三十、退出登录检查
确认退出后:
Session失效。
Token失效或不可继续使用。
Refresh Token不能继续刷新。
用户缓存合理清理。
敏感页面不可通过后退继续访问。
三十一、权限体系检查
明确建立权限矩阵。
至少区分:
游客
普通用户
管理员
超级管理员
如存在其他角色也加入。
测试:
页面权限
接口权限
数据权限
操作权限
特别模拟:
普通用户访问:
/admin
/admin/users
/admin/settings
普通用户直接调用管理员API。
例如:
/api/admin/users
必须确认后端真正校验权限。
禁止仅:
前端隐藏按钮。
三十二、IDOR越权测试
模拟:
用户A登录。
访问:
/user/A
然后尝试修改为:
/user/B
检查是否能获取B的数据。
检查:
订单
文件
个人资料
聊天
项目
收藏
历史记录
上传文件
等所有用户数据。
三十三、管理员系统专项检查
检查:
管理员登录。
管理员Session。
管理员权限。
管理员接口。
管理员数据访问。
管理员退出。
检查管理员入口是否直接暴露敏感信息。
三十四、管理员暴力破解防护
检查:
登录限流。
错误次数。
延迟。
锁定策略。
异常IP。
验证码。
三十五、管理员操作审计
检查是否记录:
管理员账号
时间
IP
操作类型
对象
修改前值
修改后值
结果
至少重要操作必须可追踪。
三十六、数据库检查
检查:
数据库连接。
连接配置。
连接池。
超时。
异常重连。
检查:
表结构
字段类型
默认值
NULL
UNIQUE
INDEX
FOREIGN KEY
约束
三十七、数据库性能
寻找:
N+1查询
全表扫描
无索引查询
重复查询
超大查询
无分页查询
三十八、数据库事务
涉及:
付款
余额
订单
库存
账号
重要数据修改
多表更新
必须检查Transaction。
避免:
操作完成一半。
三十九、数据库安全
检查:
SQL Injection
ORM注入风险
字符串拼接SQL
动态SQL
数据库账号权限
数据库公网暴露
默认密码
四十、开发/测试/生产数据库隔离
确认:
开发
测试
生产
不能混用同一数据库。
四十一、敏感信息全项目扫描
搜索:
Key
Secret
Password
Token
Private Key
Access Key
数据库密码
管理员密码
检查:
源代码
前端Bundle
HTML
JS
配置
.env
日志
README
Demo
Test
Build文件
历史备份
四十二、前端敏感信息暴露
生产Build后检查前端Bundle。
查看是否存在:
API Secret
管理员账号
数据库信息
私有接口
服务器内部地址
内部路径
系统提示词
四十三、Git安全检查
如果存在Git仓库。
检查:
Git历史是否曾提交:
.env
API Key
密码
Token
数据库密码
私钥
注意:
当前代码中删除,不代表Git历史中不存在。
四十四、依赖检查
检查:
package.json
package-lock.json
pnpm-lock.yaml
yarn.lock
requirements.txt
其他依赖文件。
检查:
版本冲突
重复依赖
未使用依赖
废弃依赖
危险依赖
已知漏洞
版本过旧
四十五、依赖锁定
确认生产项目是否存在Lock文件。
避免生产部署时安装不同版本。
四十六、供应链风险
检查:
异常第三方包
来源不明依赖
极低使用量包
名称相似包
疑似Typosquatting
四十七、构建验证
不要只运行开发模式。
实际执行项目当前技术栈对应的:
安装依赖
开发启动
生产构建
生产启动
例如:
npm install
npm run dev
npm run build
npm run start
具体按照当前项目实际命令执行。
四十八、干净环境验证
在不破坏原项目的前提下,模拟一个干净环境。
验证:
不依赖历史缓存。
不依赖已经存在的node_modules。
不依赖本机特殊配置。
不依赖之前手工生成但没有记录的文件。
理想状态:
重新获取项目 → 安装依赖 → 配置环境变量 → 构建 → 启动。
即可正常运行。
四十九、生产构建检查
检查Build:
是否成功。
是否存在Warning。
是否存在Chunk异常。
是否存在超大Bundle。
是否有Source Map泄露风险。
是否包含开发代码。
是否包含调试信息。
五十、性能检查
检查:
首屏加载
页面加载
交互响应
API响应
图片加载
字体加载
JS大小
CSS大小
检查:
重复请求
重复Render
无限Render
Memory Leak
大量DOM
超大资源
阻塞JS
五十一、缓存机制
检查:
浏览器缓存
服务器缓存
CDN缓存
LocalStorage
SessionStorage
IndexedDB
Service Worker
检查:
旧版本缓存
缓存污染
用户切换缓存
退出登录缓存
敏感数据缓存
五十二、Service Worker检查
如存在:
缓存版本是否更新。
旧缓存是否清理。
是否出现:
更新代码但用户仍看到旧版本。
五十三、本地保障措施
检查在网络异常时:
页面是否崩溃。
是否有合理缓存。
是否保留必要用户输入。
是否能够恢复。
禁止把:
密码
Token
管理员数据
隐私信息
长期保存在不安全本地存储。
五十四、错误处理检查
模拟:
网络异常
API异常
数据库异常
文件异常
服务器异常
第三方服务异常
检查:
Error Boundary
Fallback
Loading
Retry
Toast
错误页
五十五、404 / 403 / 500
必须存在合理处理。
确认:
404不是白屏。
403不会泄露数据。
500不会返回内部堆栈。
五十六、信息泄露
生产环境禁止把以下直接返回给用户:
服务器路径
SQL
数据库结构
Stack Trace
环境变量
内部IP
依赖版本详情
源码路径
五十七、XSS
测试:
输入框
用户名
评论
搜索
富文本
URL参数
后台管理输入
测试类似:
事件属性
恶意HTML
确保输入和输出正确过滤/转义。
五十八、CSRF
涉及:
修改密码
修改邮箱
删除数据
后台操作
支付
重要POST请求
检查是否存在CSRF保护。
五十九、SQL注入
测试:
登录
搜索
查询
URL参数
过滤参数
排序参数
管理员功能
六十、命令注入
如果后端调用:
Shell
FFmpeg
Python
转换工具
系统命令
检查用户参数能否进入系统命令。
六十一、路径穿越
检查:
下载
上传
读取文件
删除文件
静态资源
测试类似:
../
..
六十二、SSRF
如果服务器能够根据用户提供URL访问网络。
检查:
localhost
192.0.2.10
内网地址
云元数据地址
等是否可以被访问。
六十三、Open Redirect
检查登录跳转等:
redirect=
next=
returnUrl=
是否可以跳转到任意外部网站。
六十四、CORS
检查:
Access-Control-Allow-Origin。
不能无条件允许:
同时携带敏感认证。
六十五、安全Headers
检查:
Content-Security-Policy
X-Content-Type-Options
Referrer-Policy
Permissions-Policy
HSTS
Frame限制
六十六、Clickjacking
确认敏感页面不能被恶意Iframe嵌入。
六十七、暴力破解
检查:
用户登录。
管理员登录。
验证码。
重置密码。
是否可以无限尝试。
六十八、异常用户检测
检查是否可以识别:
异常请求频率
大量错误登录
大量404扫描
大量API请求
批量注册
批量抓取
恶意上传
可疑IP行为
至少应该具备:
记录
限流
告警
封禁策略
中的合理措施。
六十九、资源请求上限
检查:
请求体大小。
JSON大小。
URL长度。
上传大小。
查询条数。
分页最大值。
避免:
limit=999999999
直接返回全数据库。
七十、分页限制
所有大数据列表检查:
分页。
每页上限。
最大查询限制。
七十一、文件上传安全
如支持上传。
检查:
文件大小
扩展名
MIME
真实文件类型
文件名
存储路径
禁止仅依据扩展名判断文件类型。
七十二、文件名安全
检查:
../
特殊字符
超长文件名
同名覆盖
恶意HTML文件名
七十三、压缩包安全
如支持ZIP:
检查:
Zip Slip
压缩炸弹
超大解压
路径穿越
七十四、上传文件访问权限
确认:
用户A不能访问用户B私人文件。
私密文件不能仅靠猜URL访问。
七十五、日志系统检查
检查:
访问日志
错误日志
登录日志
管理员日志
安全日志
API日志
七十六、日志敏感信息
禁止记录:
密码
完整Token
API Key
银行卡
完整身份证
不必要的用户敏感信息
七十七、日志轮转
检查日志是否会:
无限增长。
占满磁盘。
七十八、异常监控
检查是否存在:
服务器异常记录。
API异常记录。
程序崩溃记录。
如果没有:
标记为运维风险。
七十九、第三方接口检查
列出全部第三方服务。
包括:
AI
短信
邮箱
支付
地图
登录
OSS
CDN
分析
等。
检查:
API地址
Key管理
超时
失败
重试
限流
费用
八十、第三方接口故障降级
模拟第三方服务不可用。
检查项目是否:
整个崩溃。
无限Loading。
大量重试。
应该合理提示:
服务暂不可用。
八十一、AI接口专项检查
如果项目包含大模型API。
检查:
模型名称是否配置化。
API Base URL是否配置化。
API Key是否只存在服务器端。
八十二、AI成本控制
检查:
每用户次数。
每分钟调用。
每日调用。
Token上限。
请求长度。
输出长度。
防止:
用户无限调用产生费用。
八十三、Prompt Injection
如果AI可以调用:
工具
数据库
文件
外部API
检查:
用户是否可以通过提示词越权。
例如:
“忽略之前指令……”
不能因此获得系统权限。
八十四、System Prompt泄露
检查是否存在方法可以直接获取:
系统提示词。
开发者指令。
内部工具描述。
内部密钥。
八十五、AI工具权限
Agent调用:
数据库
文件
Shell
浏览器
管理员接口
等工具时必须进行权限控制。
不能:
模型想调用就调用。
八十六、AI异常输出
检查:
空输出
超长输出
非法JSON
HTML
Markdown
恶意代码
模型拒答
超时
界面必须合理处理。
八十七、数据隐私
检查用户数据:
是否发送第三方。
发送什么。
是否必要。
特别检查:
聊天记录
上传文件
账号信息
用户隐私
八十八、备份系统
检查:
数据库备份。
用户文件备份。
配置备份。
重要项目数据备份。
八十九、恢复验证
“有备份”不等于“能恢复”。
确认恢复方案:
数据库如何恢复。
文件如何恢复。
配置如何恢复。
九十、部署配置检查
检查:
开发环境
测试环境
生产环境
是否明确区分。
九十一、HTTPS
正式生产环境必须检查:
HTTPS。
SSL证书。
HTTP → HTTPS。
证书过期。
Mixed Content。
九十二、反向代理
如使用:
Nginx
Apache
Cloudflare
云服务网关
检查:
路径。
Header。
上传大小。
超时。
WebSocket。
九十三、SPA部署
如使用SPA。
检查:
直接访问:
/dashboard
刷新是否404。
九十四、静态资源生产路径
检查Build以后:
JS
CSS
图片
字体
是否都能正常加载。
九十五、WebSocket
如存在:
连接
断线
重连
认证
超时
资源释放
九十六、Docker
如果存在Docker。
检查:
Dockerfile
镜像大小
Secrets
端口
Volume
用户权限
Healthcheck
九十七、服务器权限
检查程序是否以不必要的:
root
Administrator
运行。
原则:
最小权限。
九十八、环境变量检查
确认生产必要变量完整。
避免:
某变量在开发电脑存在,
但文档没有记录,
导致部署失败。
九十九、部署文档
确认一个新的开发人员是否能够仅根据项目文档完成:
安装
配置
启动
构建
部署
如果不能:
标记为维护风险。
一百、故障恢复
检查:
服务崩溃是否自动恢复。
数据库短暂不可用如何处理。
第三方服务恢复后项目能否自行恢复。
一百零一、健康检查
如项目需要正式长期运行,检查是否具有:
/health
或类似健康检查。
用于判断:
服务是否活着。
数据库是否连接。
核心服务是否正常。
一百零二、优雅关闭
检查服务器退出时:
连接是否释放。
数据库连接是否释放。
任务是否中断。
数据是否可能损坏。
一百零三、并发测试
至少检查:
多个用户同时登录。
多个用户同时提交。
重复点击。
重复写入。
同时上传。
寻找:
Race Condition
重复数据
状态覆盖
一百零四、用户模拟完整流程
至少模拟完整普通用户:
打开首页
↓
注册
↓
登录
↓
进入用户页面
↓
使用主要功能
↓
修改数据
↓
刷新
↓
退出登录
↓
重新登录
确认整个流程连贯。
一百零五、管理员完整流程
模拟管理员:
打开后台
↓
管理员登录
↓
查看用户
↓
执行合法操作
↓
查看日志
↓
修改允许修改的内容
↓
退出
确认:
权限正确。
数据正确。
操作有记录。
一百零六、非法用户模拟
模拟:
未登录用户访问用户页面。
普通用户访问管理员页面。
伪造Token。
过期Token。
修改URL ID。
修改API参数。
大量请求。
非法上传。
一百零七、空数据状态
测试:
没有用户
没有内容
没有搜索结果
没有历史记录
没有通知
界面不能异常。
一百零八、超大数据状态
模拟:
大量用户
大量列表
大量历史记录
大量文件
长文本
超长用户名
检查:
页面性能
数据库查询
分页
布局
一百零九、特殊字符
测试:
中文
英文
emoji
空格
换行
引号
单引号
尖括号
特殊符号
确保:
不会报错。
不会注入。
不会乱码。
一百一十、编码检查
统一检查:
UTF-8。
避免:
中文乱码。
路径乱码。
JSON乱码。
数据库乱码。
一百一十一、日期时间
检查:
时区。
前端时间。
后端时间。
数据库时间。
避免:
UTC与本地时间混乱。
一百一十二、表单验证
所有表单检查:
前端验证。
后端验证。
不得只做前端验证。
因为用户可以绕过浏览器直接调用API。
一百一十三、重复提交
检查:
登录
注册
创建
删除
支付
AI生成
上传
表单
快速点击是否产生重复操作。
一百一十四、错误提示
错误提示要求:
用户能理解。
不要泄露技术内部信息。
例如不要直接显示:
SQL Error
Stack Trace
服务器目录。
一百一十五、加载状态
所有异步功能检查:
Loading。
成功。
失败。
空数据。
重试。
一百一十六、功能清单核对
扫描项目后生成:
【所有用户可见功能清单】
逐个标记:
✅ 正常
⚠️ 异常
❌ 不可用
❓ 未验证
一百一十七、接口清单
生成:
接口
方法
调用页面
权限
状态
风险
一百一十八、路由清单
生成:
路由
页面
权限
是否有效
异常情况
一百一十九、配置清单
生成:
配置名称
位置
作用
环境
是否硬编码
是否敏感
一百二十、依赖清单
输出重点依赖:
名称
版本
用途
风险
是否必要
一百二十一、最终代码质量检查
检查:
命名。
可读性。
注释。
模块划分。
异常处理。
重复代码。
注意:
不要求为了“漂亮”而大规模重构。
只指出会影响:
稳定性
维护性
安全性
扩展性
的问题。
一百二十二、不得擅自修改正常业务效果
检查过程中禁止:
因为“最佳实践”而随意修改UI。
改变设计。
改变动画。
改变交互。
改变业务需求。
改变用户流程。
技术审计 ≠ 产品重新设计。
一百二十三、修复前建立问题台账
发现问题后先生成:
BUG-001
严重程度:
问题类型:
文件:
代码位置:
问题描述:
触发方式:
影响:
修复建议:
是否阻断上线:
验证状态:
依次编号:
BUG-002
BUG-003
……
一百二十四、检查完成后再进入修复阶段
第一轮完成后:
先输出完整报告。
然后按:
P0
↓
P1
↓
P2
↓
P3
顺序处理。
一百二十五、修复原则
每次修复尽可能保持:
最小改动。
禁止:
为了修一个Bug大范围重写无关模块。
一百二十六、修复后必须回归
每个问题修复后:
重新运行对应测试。
例如:
修登录Bug。
必须重新测试:
正确登录
错误密码
退出
Token
权限
管理员
等相关功能。
一百二十七、全局回归
全部修复结束以后再次执行:
前端
后端
API
登录
权限
管理员
构建
安全
部署
全局测试。
一百二十八、禁止“修一个坏两个”
修复后检查:
是否影响其他页面。
其他组件。
其他接口。
其他权限。
一百二十九、最终Build
最终必须完成一次正式Production Build。
一百三十、最终生产环境模拟
尽可能按照正式部署方式运行。
避免:
开发模式正常,
生产环境失败。
一百三十一、最终输出文件一:《项目上线审计报告》
包含:
1. 项目信息
技术栈:
前端:
后端:
数据库:
部署:
2. 检查范围
3. P0致命问题
4. P1高风险问题
5. P2中风险问题
6. P3低风险问题
7. 功能异常
8. 安全风险
9. 架构风险
10. 高耦合模块
11. 硬编码
12. 配置问题
13. API问题
14. 数据库问题
15. 用户系统问题
16. 管理员问题
17. 权限问题
18. 性能问题
19. 依赖风险
20. 构建问题
21. 部署问题
22. 运维风险
23. 未验证内容
一百三十二、最终输出文件二:《问题修复台账》
使用表格:
| ID | 严重等级 | 模块 | 文件 | 问题 | 影响 | 是否阻断上线 | 修复状态 | 验证结果 |
|---|---|---|---|---|---|---|---|---|
一百三十三、最终输出文件三:《功能验收清单》
格式:
| 页面 | 功能 | 测试方式 | 结果 | 异常 |
|---|---|---|---|---|
一百三十四、最终输出文件四:《API验收清单》
格式:
| API | Method | 权限 | 正常请求 | 异常请求 | 限流 | 状态 |
|---|---|---|---|---|---|---|
一百三十五、最终输出文件五:《安全风险报告》
包含:
认证
授权
数据
密钥
API
数据库
上传
XSS
CSRF
SQL Injection
SSRF
路径穿越
暴力破解
限流
管理员
AI安全
一百三十六、最终输出文件六:《项目配置说明》
用于以后维护。
记录:
如何修改字体。
如何修改颜色。
如何修改API地址。
如何修改端口。
如何修改数据库。
如何修改域名。
如何修改第三方服务。
如何修改AI模型。
目标:
未来修改配置时,不需要重新全项目搜索。
一百三十七、最终输出文件七:《部署运行说明》
必须让不会写代码的人也能看懂。
写清:
项目需要什么环境
安装什么
在哪里配置
如何启动前端
如何启动后端
如何Build
如何部署
如何更新
如何查看日志
如何备份
如何恢复
出错去哪里检查
一百三十八、最终评分
最终给出:
项目健康度
0—100
代码质量
0—100
架构可维护性
0—100
前端完整度
0—100
后端完整度
0—100
API可靠性
0—100
安全性
0—100
性能
0—100
部署成熟度
0—100
运维成熟度
0—100
一百三十九、最终上线状态
只能选择:
🟢 可以上线
所有P0/P1已经解决。
生产构建正常。
核心功能验证通过。
不存在已知重大安全漏洞。
🟡 修复后上线
项目总体可运行。
但仍存在必须修复的问题。
列出:
【上线前必须修复项】
🔴 禁止上线
存在:
P0问题。
核心系统故障。
严重权限问题。
严重安全漏洞。
数据风险。
无法生产构建。
一百四十、最终必须回答的20个问题
审计结束以后,单独回答:
当前项目能不能正常启动?
当前项目能不能正常Build?
当前项目能不能正式部署?
前端所有主要组件是否正常?
所有页面跳转是否正常?
是否存在明显硬编码?
字体是否能够集中统一修改?
设计变量是否集中管理?
代码是否存在高耦合?
前后端接口是否完全一致?
是否存在端口冲突?
用户登录是否正常?
管理员登录是否正常?
普通用户能否越权获得管理员权限?
是否存在敏感信息暴露?
是否存在严重安全漏洞?
是否存在资源请求限制?
是否具备异常用户检测或防攻击能力?
是否具备备份、日志和异常恢复能力?
目前距离真正正式上线还缺什么?
一百四十一、证据要求
所有“通过”的结论尽可能提供证据。
例如:
执行命令:
结果:
测试页面:
HTTP状态:
Console:
日志:
不要仅说:
“已检查正常。”
一百四十二、验证状态统一使用以下标记
✅【实际验证通过】
🔎【静态代码检查通过】
⚠️【存在问题】
❌【验证失败】
❓【无法验证】
⏳【尚未检查】
一百四十三、最后特别要求
本次审计的目标不是证明项目“没问题”。
而是尽可能找出:
现在存在的问题,
隐藏的问题,
部署以后才会暴露的问题,
数据增加以后才会暴露的问题,
多人使用以后才会暴露的问题,
遭到异常请求以后才会暴露的问题,
未来修改项目时容易产生的问题。
请按照正式软件上线验收标准执行。
不要为了让我放心而降低问题等级。
发现问题直接报告。
无法验证就标记无法验证。
没有证据不要判定通过。
最终执行顺序
严格按照:
① 项目盘点
↓
② 静态代码扫描
↓
③ 架构与硬编码扫描
↓
④ 前端检查
↓
⑤ 后端检查
↓
⑥ API映射
↓
⑦ 数据库检查
↓
⑧ 登录认证
↓
⑨ 权限与管理员
↓
⑩ 安全检查
↓
⑪ 依赖检查
↓
⑫ 实际启动
↓
⑬ 功能测试
↓
⑭ 异常测试
↓
⑮ Production Build
↓
⑯ 部署环境模拟
↓
⑰ 输出审计报告
↓
⑱ 建立BUG台账
↓
⑲ 按严重等级修复
↓
⑳ 修复后逐项回归
↓
㉑ 全局回归
↓
㉒ 最终生产Build
↓
㉓ 最终上线验收
进行。
任何无法完成的步骤不得跳过后假设为成功。
必须标记:
【未完成】
并说明原因。