「短网址服务」安全测试清单
短网址服务安全测试清单
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 覆盖矩阵。