1. 输入校验与防注入
SQL 注入
- 在生成短链 API 中输入恶意 URL:
https://abc.com' OR '1'='1 - 在搜索接口传入注入语句:
s.io/abc123' UNION SELECT ... - 预期:系统返回参数错误(100001),无数据泄露。
- 在生成短链 API 中输入恶意 URL:
XSS 攻击
- 输入长链为:
<script>alert(1)</script> - 前端展示时是否被执行。
- 预期:系统对 URL 做转义,前端仅展示字符串,不执行脚本。
- 输入长链为:
HTML 注入
- 自定义短码输入 HTML 标签:
<b>shop</b> - 预期:保存失败,提示「短码不合法」。
- 自定义短码输入 HTML 标签:
2. 恶意短链检测
黑名单域名
- 输入 URL 来自钓鱼域名 → 返回错误码
120003。
- 输入 URL 来自钓鱼域名 → 返回错误码
恶意内容检测
- 测试接入 Google Safe Browsing / 腾讯网址安全服务。
- 预期:恶意 URL 阻止生成短链。
3. 认证与鉴权
未登录访问
- 尝试调用需要登录的 API(如
/api/list)。 - 预期:返回
110004(Token 无效/过期)。
- 尝试调用需要登录的 API(如
权限越权
- 用户 A 尝试删除用户 B 的短链。
- 预期:返回
110005(权限不足)。
API Key 管理
- 过期的 API Key 调用 → 返回
130001(Key 无效)。 - 已删除的 Key 调用 → 返回
130001。 - 短时间内高频调用 → 返回
130003(超限)。
- 过期的 API Key 调用 → 返回
4. 短链跳转安全
开放重定向
- 确认跳转目标为 DB 中合法 URL,禁止拼接任意参数实现跳转。
- 预期:禁止绕过生成流程直接构造跳转 URL。
HTTPS 强制
- 访问短链服务必须走 HTTPS(HSTS 生效)。
- 预期:HTTP 请求自动跳转 HTTPS。
5. 数据安全
密码存储
- 确认密码存储使用 BCrypt/Argon2,禁止明文或弱 Hash。
敏感数据泄露
- API Key 在列表展示时应打码。
- 返回日志中不得打印完整 Token 或密码。
数据库备份
- 确认备份文件加密存储,访问控制严格。
6. 限流与防刷
接口限流
- 短时间内高频调用
/api/shorten。 - 预期:超过阈值返回
100002/130003,系统稳定。
- 短时间内高频调用
验证码防护(可选)
- 游客频繁生成短链时触发验证码机制。
7. CSRF 与跨域
CSRF 测试
- 模拟第三方网站发起 POST 请求到短链 API。
- 预期:请求被拦截(Token 校验或 SameSite Cookie)。
CORS 配置
- 测试跨域访问接口。
- 预期:仅允许白名单域名调用 API。
8. 文件与二维码安全
二维码生成
- 确认返回的二维码内容仅包含短链,不包含恶意脚本。
下载安全
- 确认下载文件类型为
image/png或image/svg+xml,避免 XSS。
- 确认下载文件类型为
9. 审计与日志
登录失败审计
- 多次失败登录是否记录日志。
异常访问记录
- 短链不存在、过期的访问是否记录。
API Key 滥用记录
- 超限/异常调用是否有报警机制。
测试工具
- SQL 注入/XSS:Burp Suite / OWASP ZAP / sqlmap
- 恶意 URL 检测:集成 Google Safe Browsing API
- 压力防刷:JMeter + Gatling
- CORS/CSRF:Postman + 自定义 JS 脚本
📌 总结:
这份 安全测试清单 覆盖了:输入安全、认证授权、防注入、防刷、数据保护、日志审计。
配合之前的功能测试、性能测试,可以形成完整的 QA 覆盖矩阵。
继续阅读
探索更多技术文章
浏览归档,发现更多关于系统设计、工具链和工程实践的内容。
「prd」更多文章
Kite 关闭案例:AI 编程助手为什么早起飞却没飞远
开场:它比 AI 编程热潮更早出现 Kite 是较早一批 AI 编程助手产品,主打智能代码补全、文档提示和开发效率提升。在今天看,AI 写代码已经是热门方向,但 Kite 做这件事时,市场和模型生态还没有完全成熟。
Powa Technologies 失败案例:宏大支付愿景为什么没有落地
开场:它讲了一个非常大的故事 Powa Technologies 曾经被包装成移动支付和零售技术领域的明星公司。它的愿景很大:让消费者通过手机完成更顺滑的购物和支付,让商家获得新的交易入口。支付、移动、零售、O2O,这些关键词在当时都很有想象空间。
BlueJeans 受挫案例:视频会议早入场,为什么没赢到最后
开场:早进入市场,不等于最后胜出 BlueJeans 曾经是云视频会议市场的重要玩家。它比很多后来者更早服务企业客户,也抓住了跨设备视频会议的需求。后来它被 Verizon 收购,但最终服务停止,成为视频会议竞争中的受挫案例。