Acceptance Task Description(二次技术审计验收任务书)

Acceptance Task Description(二次技术审计验收任务书)

该 DOCX 包含不完整的 Office 元数据关系,已使用兼容模式恢复正文和媒体。

参考资料DOCX下载原文件
> 该 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

↓

㉓ 最终上线验收

进行。

任何无法完成的步骤不得跳过后假设为成功。

必须标记:

【未完成】

并说明原因。