学习记录:把海外社区论坛场景下的安全测试整理成一篇入门笔记,结合个人实践,并与 AI 一起补全结构,便于按模块与方法查阅。

若你在测开放注册、UGC、私信与后台共存的社区产品,希望这篇能当检查清单用。

适合对象:准备在授权环境下系统梳理安全测试思路的同学;文中不默认你已熟悉渗透工具链或深层攻防细节。


阅读提示:全文按「基础概念 → 论坛安全实战 → 专项方法 → 用例与 Bug」四块展开;配合页面 TOC 或下方折叠目录跳转。第 10~20 章对应注册登录、资料、发帖评论、多媒体与后台等主链路,宜对照账号角色与接口逐项核对。

章节目录(共 35 章,点击展开,条目可点击跳转)
  1. 为什么海外社区论坛要做安全测试
  2. 什么是安全测试
  3. 安全测试和功能测试有什么区别
  4. 安全测试的边界和注意事项
  5. 社区论坛常见安全风险有哪些
  6. 账号安全怎么理解
  7. 数据安全和隐私安全怎么理解
  8. 内容安全和平台安全有什么关系
  9. 安全测试前需要准备什么
  10. 注册登录安全怎么测
  11. 第三方登录安全怎么测
  12. Token、Session、Cookie 安全怎么测
  13. 用户资料安全怎么测
  14. 发帖、评论、回复安全怎么测
  15. 图片、视频、文件上传安全怎么测
  16. 私信与通知安全怎么测
  17. 搜索功能安全怎么测
  18. 举报、审核、后台管理安全怎么测
  19. 用户隐私与个人数据安全怎么测
  20. 海外合规相关安全点怎么测
  21. 认证与鉴权安全怎么测
  22. 越权问题怎么测
  23. XSS 风险怎么测
  24. CSRF 风险怎么测
  25. 注入类风险怎么理解和测试
  26. 文件上传安全怎么测
  27. 敏感信息泄露怎么测
  28. 密码与验证码安全怎么测
  29. 接口防刷、防重放、防频率攻击怎么测
  30. 日志和错误信息安全怎么测
  31. 安全问题如何初步定位
  32. 安全测试用例怎么写
  33. 安全类 Bug 怎么提交
  34. 新手常见误区
  35. 最后总结

第一部分:安全测试基础概念

如果你是安全测试新手,建议先完整学习这一部分。

如果你已经了解常见 Web/App 安全风险,可以直接跳到 第二部分:海外社区论坛安全测试实战


1. 为什么海外社区论坛要做安全测试

社区论坛是开放型产品,用户可以注册、登录、发帖、评论、私信、上传图片视频、举报内容、修改资料。

这些能力越开放,安全风险就越多。

例如:

  • 用户账号可能被盗
  • 普通用户可能越权查看别人的私信
  • 用户输入内容可能造成页面脚本执行风险
  • 图片或文件上传可能被滥用
  • 后台管理接口可能被普通用户调用
  • 接口可能被批量刷请求
  • 敏感数据可能出现在接口返回或日志中
  • 错误信息可能泄露系统内部细节

海外社区还会涉及更多隐私与合规要求,例如用户数据删除、账号注销、Cookie 授权、个人信息保护等。


1.1 安全问题会带来什么影响

安全问题 可能影响
账号被盗 用户资产、隐私、历史内容被滥用
越权访问 用户私信、通知、资料被其他人看到
越权操作 普通用户删除别人帖子或操作后台
XSS 恶意脚本影响其他用户页面安全
文件上传风险 上传异常文件影响系统或用户安全
敏感信息泄露 邮箱、手机号、Token、内部字段泄露
后台权限失控 内容、用户、审核功能被滥用
接口被刷 注册、验证码、评论、私信被恶意利用

1.2 社区论坛为什么特别容易有安全风险

因为社区论坛有大量用户输入和互动。

用户可以输入:

  • 昵称
  • 简介
  • 帖子标题
  • 帖子正文
  • 评论
  • 私信
  • 搜索关键词
  • 举报描述

用户可以上传:

  • 头像
  • 帖子图片
  • 评论图片
  • 私信图片
  • 视频

用户可以访问:

  • 自己的数据
  • 别人的公开资料
  • 帖子和评论
  • 通知
  • 私信
  • 后台管理,限管理员

输入多、上传多、接口多、角色多,就意味着安全测试必须重视。


2. 什么是安全测试

安全测试就是:

在授权范围内验证系统是否存在可能被恶意利用的漏洞或风险,确保用户数据、系统功能和业务流程不会被非法访问、篡改或滥用。

简单理解:

功能测试:正常用户能不能用
权限测试:不该做的人能不能做
安全测试:系统会不会被恶意利用或泄露风险

安全测试不是让测试同学去攻击真实用户或生产系统,而是在测试环境中用安全的方法提前发现问题。


2.1 安全测试主要看什么

  • 账号是否安全
  • 登录态是否安全
  • 用户是否能越权访问别人数据
  • 用户输入是否被安全处理
  • 文件上传是否受限制
  • 接口是否有频率限制
  • 敏感信息是否泄露
  • 后台接口是否严格校验权限
  • 错误信息是否暴露系统细节
  • 日志是否记录敏感内容
  • 用户隐私功能是否可用

3. 安全测试和功能测试有什么区别

对比项 功能测试 安全测试
关注点 功能是否按需求工作 功能是否能被恶意利用
用户视角 正常用户 正常用户 + 异常用户 + 恶意输入
测试重点 流程、页面、提示、数据 认证、权限、输入、上传、泄露、防护
常见问题 流程不通、展示错误 越权、注入、XSS、敏感信息泄露
严重程度 视功能影响而定 通常较高

3.1 举个例子:用户资料修改

功能测试会测:

用户能不能修改自己的昵称和简介
修改后是否展示成功

安全测试还要测:

用户A能不能修改用户B资料?
简介里输入特殊脚本内容是否会被执行?
接口返回是否包含手机号、邮箱等不该返回的信息?
上传头像是否限制文件格式和大小?
错误提示是否暴露后端路径或数据库信息?

4. 安全测试的边界和注意事项

安全测试必须有边界。

测试同学要记住:

只在授权环境测试
只测试授权范围内的功能
不要攻击真实用户
不要破坏数据
不要绕过公司规范
不要对生产环境做未授权扫描或压测

4.1 新手安全测试原则

原则 说明
授权优先 没有授权不要测高风险安全行为
测试环境优先 优先在测试环境验证
不破坏数据 不删除、篡改真实用户数据
不传播风险内容 不扩散敏感 payload 或漏洞细节
保留证据 截图、请求、响应、账号、环境要记录
及时上报 安全问题不要私下传播

4.2 本文的安全测试范围

本文重点讲测试同学常见可执行的安全验证:

  • 登录认证
  • 权限与越权
  • 用户输入安全
  • 文件上传安全
  • Token 和 Cookie
  • 接口频率限制
  • 敏感信息泄露
  • 错误信息泄露
  • 后台权限
  • 用户隐私功能

本文不会提供破坏性攻击教程,也不会指导绕过真实系统防护。


5. 社区论坛常见安全风险有哪些

风险 简单说明 社区场景
认证风险 登录态、Token、验证码处理不安全 Token 过期后还能使用
越权风险 用户访问或操作不属于自己的资源 用户A查看用户B私信
XSS 用户输入内容导致脚本执行风险 帖子正文、评论、简介
CSRF 用户在不知情下触发操作 Web 删除帖子、修改资料
注入风险 特殊输入影响后端查询或命令 搜索、登录、筛选参数
文件上传风险 上传危险文件或伪装文件 头像、帖子图片、视频
敏感信息泄露 返回或展示不该暴露的数据 接口返回手机号、Token
频率攻击 高频调用接口滥用系统 短信验证码、注册、评论
错误信息泄露 错误提示暴露内部实现 SQL 错误、服务路径、堆栈
后台安全风险 后台接口或菜单被越权访问 普通用户调用审核接口

6. 账号安全怎么理解

账号安全是安全测试的基础。

社区用户账号一旦被盗,攻击者可能:

  • 发布违规内容
  • 删除用户内容
  • 查看私信
  • 修改资料
  • 冒充用户诈骗
  • 批量私信别人

6.1 账号安全测试重点

  • 密码规则是否合理
  • 登录失败是否有限制
  • 验证码是否可重复使用
  • 找回密码流程是否安全
  • 修改密码后旧 Token 是否失效
  • 退出登录后 Token 是否失效
  • 第三方登录绑定是否安全
  • 账号封禁后是否还能使用旧 Token

7. 数据安全和隐私安全怎么理解

数据安全关注:

数据不能被未授权查看、修改、删除、泄露

隐私安全关注:

用户的个人信息和私密内容不能被不该看到的人看到

社区论坛中的敏感数据包括:

  • 邮箱
  • 手机号
  • 登录设备
  • IP 地址
  • 私信内容
  • 通知内容
  • 举报记录
  • 账号状态
  • Token
  • 第三方账号绑定信息

7.1 隐私安全重点

要重点验证:

  • 用户只能查看自己的私信
  • 用户只能查看自己的通知
  • 用户不能查看别人的邮箱和手机号
  • 管理后台敏感字段是否脱敏
  • 日志中是否记录敏感信息
  • 用户注销后个人资料如何展示
  • 数据导出和删除流程是否只允许本人操作

8. 内容安全和平台安全有什么关系

内容安全主要关注违规内容治理,例如广告、诈骗、色情、仇恨言论。

平台安全主要关注系统本身是否安全,例如账号、权限、接口、数据。

两者有交叉。

例如:

  • 恶意链接既是内容安全问题,也是用户安全问题
  • 私信诈骗既是内容治理问题,也是账号安全问题
  • 批量发帖既是风控问题,也是接口防刷问题
  • 上传异常文件既是内容审核问题,也是文件安全问题

所以安全测试和风控审核专项不是完全割裂的。


9. 安全测试前需要准备什么


9.1 准备测试环境

需要确认:

  • 是否允许做安全测试
  • 哪个环境可以测
  • 哪些功能在范围内
  • 是否有专用测试账号
  • 是否能查看接口文档
  • 是否能查看日志
  • 是否有后台账号
  • 是否允许使用安全测试工具
  • 出现高风险问题时如何上报

9.2 准备账号

建议准备:

账号 用途
用户A 创建资源和私有数据
用户B 测试越权访问用户A资源
游客 测试未登录访问
被禁言用户 测试状态限制
被封禁用户 测试旧 Token 是否失效
管理员 测试后台权限
版主 测试局部管理权限

9.3 准备测试数据

  • 用户A的帖子
  • 用户B的帖子
  • 用户A的私信
  • 用户B的通知
  • 用户A的收藏记录
  • 用户B的举报记录
  • 多语言输入内容
  • 特殊字符输入内容
  • 正常图片
  • 不支持格式文件
  • 超大文件

第二部分:海外社区论坛安全测试实战

这一部分开始进入项目实战。

安全测试要结合具体业务模块看,不能只看抽象漏洞名。


10. 注册登录安全怎么测

注册登录是账号安全第一道门。


10.1 注册安全测试点

  • 邮箱格式校验是否严格
  • 同一邮箱是否能重复注册
  • 邮箱大小写是否导致重复账号
  • Gmail + 别名是否按产品规则处理
  • 短时间大量注册是否被限制
  • 注册验证码是否有频率限制
  • 验证码是否可重复使用
  • 验证码过期后是否失效
  • 密码是否符合复杂度要求,按产品规则
  • 注册失败提示是否避免泄露过多信息,按需求判断

10.2 登录安全测试点

  • 正确账号密码登录成功
  • 错误密码登录失败
  • 多次错误密码是否触发限制
  • 不存在账号提示是否过于明确,按安全策略判断
  • 被封禁账号是否不能登录或受限
  • 登录成功是否返回 Token
  • 登录失败是否不返回 Token
  • 退出登录后 Token 是否失效
  • 修改密码后旧 Token 是否失效,按需求判断

10.3 找回密码安全测试点

  • 找回密码链接是否有有效期
  • 找回密码链接是否只能使用一次
  • 修改密码后旧密码不能登录
  • 修改密码后旧 Token 是否失效
  • 用户A不能使用用户B的重置链接
  • 重置成功后是否通知用户,按需求判断

11. 第三方登录安全怎么测

海外社区常见 Google、Apple、Facebook、Discord 等第三方登录。


11.1 第三方登录安全重点

  • 授权 code 为空时不能登录
  • 授权 code 错误时不能登录
  • 授权 code 过期时不能登录
  • 授权 code 不能重复使用
  • 第三方返回邮箱为空时处理正确
  • 第三方邮箱未验证时处理正确,按产品规则
  • 同一第三方账号二次登录不创建重复账号
  • 同邮箱不同第三方登录方式是否按规则绑定或提示
  • Apple 隐藏邮箱场景是否不会错误合并账号

11.2 绑定和解绑安全

测试点:

  • 绑定第三方账号时必须已登录
  • 不能绑定已被其他账号绑定的第三方账号
  • 解绑唯一登录方式时应阻止或要求先设置密码
  • 解绑后第三方账号不能继续登录原账号,按产品规则
  • 绑定/解绑操作是否有日志或通知,按需求判断

12. Token、Session、Cookie 安全怎么测

登录态安全非常重要。


12.1 Token 安全测试点

  • 不带 Token 请求需要登录接口应失败
  • 空 Token 应失败
  • 错误 Token 应失败
  • 过期 Token 应失败
  • 退出登录后的 Token 应失败
  • 修改密码后旧 Token 是否失效
  • 封禁账号后旧 Token 是否失效或受限
  • Token 是否出现在 URL 中,不建议
  • 接口返回中是否泄露不必要 Token

测试点:

  • 登录 Cookie 是否设置合理过期时间
  • 退出登录后 Cookie 是否失效
  • Cookie 是否配置安全属性,按前端/安全规范判断
  • 跨站请求是否受保护,按需求和安全策略
  • Safari 等浏览器下 Cookie 行为是否正常

13. 用户资料安全怎么测

用户资料涉及隐私和输入安全。


13.1 资料访问安全

测试点:

  • 用户A能查看用户B公开资料
  • 用户A不能查看用户B邮箱、手机号等私密字段
  • 用户A不能修改用户B资料
  • 游客查看用户资料时返回字段是否受限
  • 被拉黑用户查看对方资料是否受限,按需求判断
  • 注销用户资料是否匿名化或隐藏,按需求判断

13.2 资料输入安全

需要验证:

  • 昵称输入特殊字符后展示正常
  • 简介输入 HTML 标签后不会被当作代码执行
  • 简介输入链接时按规则处理
  • 昵称、简介超长时被限制
  • 头像上传格式和大小受限制
  • 后台展示用户资料时也不会出现脚本执行风险

14. 发帖、评论、回复安全怎么测

发帖和评论是 XSS、恶意链接、内容注入风险高发区。


14.1 用户输入安全

测试位置:

  • 帖子标题
  • 帖子正文
  • 评论内容
  • 回复内容
  • 话题名称,按需求判断
  • 举报描述

测试点:

  • 输入 HTML 标签后是否安全展示
  • 输入脚本样式文本后是否被转义或过滤
  • 输入超长内容是否被限制
  • 输入特殊字符是否导致接口 500
  • 输入 URL 是否按规则展示或审核
  • 输入多语言和 Emoji 是否正常

14.2 展示安全

同一条内容要看多个展示位置:

  • 帖子详情页
  • Feed 摘要
  • 用户主页
  • 评论列表
  • 通知摘要
  • 搜索结果
  • 后台审核页

不能只验证发布页,因为安全问题可能出现在某个展示入口。


15. 图片、视频、文件上传安全怎么测

文件上传是安全测试重点。


15.1 上传限制测试

测试点:

  • 只允许指定格式上传
  • 不支持格式应被拒绝
  • 超大文件应被拒绝
  • 损坏文件应被拒绝或提示失败
  • 文件扩展名和真实类型不一致时处理正确
  • 文件名包含特殊字符时处理正确
  • 上传失败不应暴露服务器路径或内部错误

15.2 图片视频处理安全

测试点:

  • 上传后文件 URL 是否可被未授权访问,按资源权限判断
  • 私信图片是否只有会话双方可见,按需求判断
  • 审核失败的图片视频是否不能公开访问
  • 已删除内容的媒体资源是否处理正确
  • 头像、帖子图、私信图是否使用正确权限策略

16. 私信与通知安全怎么测

私信和通知涉及用户隐私。


16.1 私信安全

测试点:

  • 用户只能查看自己参与的会话
  • 用户A不能查看用户B和用户C的私信
  • 用户A不能删除用户B的会话
  • 被拉黑后不能继续私信
  • 私信中的链接按规则处理
  • 私信图片权限正确
  • WebSocket 或实时消息只能收到自己的消息

16.2 通知安全

测试点:

  • 用户只能查看自己的通知
  • 用户只能标记自己的通知已读
  • 用户不能删除别人的通知
  • 通知接口不返回别人的资源详情
  • 点击通知后仍要校验目标资源权限
  • 已删除内容通知点击有合理提示

17. 搜索功能安全怎么测

搜索入口会接收用户输入,也可能暴露不该展示的内容。


17.1 搜索输入安全

测试点:

  • 搜索特殊字符不应导致接口 500
  • 搜索超长关键词应有限制
  • 搜索 HTML 或脚本样式文本不应影响页面展示
  • 搜索异常参数时应返回合理错误
  • 搜索结果高亮不应造成脚本执行风险

17.2 搜索结果安全

测试点:

  • 不返回已删除帖子
  • 不返回审核失败帖子
  • 不返回隐藏内容
  • 不返回用户私密资料
  • 被屏蔽用户内容是否按规则过滤
  • 被拉黑用户内容是否按规则过滤

18. 举报、审核、后台管理安全怎么测

后台管理是高危区域。


18.1 举报安全

测试点:

  • 普通用户可以举报允许举报的对象
  • 用户不能查看别人举报记录
  • 举报描述输入特殊字符后后台安全展示
  • 重复举报是否按规则限制
  • 举报接口是否有频率限制
  • 被封禁用户是否允许举报,按需求判断

18.2 审核后台安全

测试点:

  • 普通用户不能访问后台页面
  • 普通用户不能调用后台接口
  • 版主只能操作负责范围内内容
  • 管理员不能操作超级管理员,按需求判断
  • 后台高危操作要有日志
  • 后台错误信息不应暴露内部堆栈
  • 后台导出数据是否受权限控制

19. 用户隐私与个人数据安全怎么测

海外项目尤其要关注个人数据。


19.1 敏感字段返回

检查接口返回中是否包含不必要敏感字段,例如:

  • 邮箱
  • 手机号
  • IP
  • 登录设备 ID
  • Token
  • 第三方账号 ID
  • 内部用户状态字段
  • 风控标签
  • 管理员备注

公开接口不应返回不必要的敏感字段。


19.2 数据导出和删除

如果支持数据导出、删除账号:

  • 只有本人能申请导出自己的数据
  • 用户A不能导出用户B数据
  • 删除账号需要身份校验
  • 删除后登录态失效
  • 删除后个人资料匿名化或隐藏,按需求判断
  • 导出文件下载链接是否有权限和有效期

20. 海外合规相关安全点怎么测

测试同学不负责解释法律,但需要验证合规相关功能是否可用和受权限保护。


Web 项目测试点:

  • 首次访问展示 Cookie 授权入口,按地区需求
  • 用户拒绝非必要 Cookie 后仍可使用基础功能
  • 用户选择可以保存
  • 用户可以重新修改选择
  • 清除 Cookie 后逻辑符合需求

20.2 年龄和未成年人保护

如果产品涉及年龄限制:

  • 未达到年龄要求时是否限制注册
  • 边界年龄处理正确
  • 年龄相关字段不能被轻易绕过,按需求判断
  • 儿童账号功能受限,按产品规则

第三部分:安全专项测试方法

这一部分不是某个具体模块,而是一套可以复用的方法。

安全测试要谨慎进行,确保在授权范围内验证,不做破坏性操作。


21. 认证与鉴权安全怎么测

认证是判断“你是谁”,鉴权是判断“你能不能做”。


21.1 认证测试点

  • 未登录不能访问需要登录的接口
  • Token 过期后不能访问
  • Token 伪造后不能访问
  • 退出登录后旧 Token 不能访问
  • 封禁后旧 Token 不能继续操作,按需求判断

21.2 鉴权测试点

  • 用户A不能操作用户B资源
  • 普通用户不能访问管理员接口
  • 版主不能操作非负责板块
  • 被禁言用户不能发帖评论
  • 被封禁用户不能继续操作

22. 越权问题怎么测

越权分为水平越权和垂直越权。


22.1 水平越权

同级用户之间操作了别人的数据。

测试方法:

1. 用户A创建资源
2. 用户B登录
3. 用户B尝试访问或操作用户A资源
4. 验证是否被拒绝
5. 验证数据没有被修改

常见场景:

  • 查看别人私信
  • 修改别人资料
  • 删除别人帖子
  • 标记别人通知已读
  • 下载别人数据导出文件

22.2 垂直越权

低权限用户操作高权限功能。

常见场景:

  • 普通用户访问后台
  • 普通用户调用审核接口
  • 普通用户封禁别人
  • 版主操作非负责板块
  • 管理员操作超级管理员

23. XSS 风险怎么测

XSS 是指用户输入内容在页面展示时,没有被正确处理,导致脚本执行风险。

测试同学可以这样理解:

用户输入的内容,应该被当作普通文本展示,而不能被浏览器当作代码执行。

23.1 需要关注的位置

  • 昵称
  • 简介
  • 帖子标题
  • 帖子正文
  • 评论
  • 私信
  • 搜索关键词回显
  • 通知摘要
  • 后台审核内容
  • 举报描述

23.2 测试思路

在授权测试环境中输入安全的测试字符串,观察页面是否:

  • 原样作为文本展示
  • 被安全转义
  • 没有弹窗或脚本执行
  • 没有破坏页面结构
  • 后台展示也安全

建议使用内部约定的安全测试样本,不要随意传播危险 payload。


24. CSRF 风险怎么测

CSRF 主要出现在 Web 场景。

简单理解:

用户已经登录某网站时,其他页面诱导用户发起一个非本人主动操作的请求。

测试同学主要关注:

  • 修改资料、删除帖子、退出登录等敏感操作是否有防护
  • 重要操作是否只接受合理来源和 Token 校验
  • 后端是否不仅依赖 Cookie,还结合 CSRF Token 或其他机制,按安全设计

新手不需要自己构造复杂攻击页面,但要知道 Web 高危操作不能只靠 Cookie 自动通过。


25. 注入类风险怎么理解和测试

注入风险是指用户输入被后端错误拼接到查询或命令中,导致异常行为。

常见入口:

  • 登录账号输入
  • 搜索关键词
  • 筛选条件
  • 排序字段
  • 用户 ID
  • 帖子 ID
  • 后台查询条件

25.1 新手测试思路

在测试环境输入特殊字符或异常参数,观察:

  • 接口是否返回 500
  • 是否出现数据库错误信息
  • 是否返回异常数据
  • 是否绕过登录或权限
  • 是否有合理的参数校验

不要在未授权环境进行破坏性注入测试。


26. 文件上传安全怎么测

文件上传安全非常重要。


26.1 测试重点

  • 文件类型限制
  • 文件大小限制
  • 文件数量限制
  • 文件名特殊字符处理
  • 扩展名和真实文件类型校验
  • 上传失败错误提示安全
  • 上传后的文件访问权限
  • 审核失败文件不可公开访问

26.2 社区项目典型场景

上传位置 安全关注点
头像 图片格式、大小、审核、公开访问
帖子图片 格式、数量、违规图片、资源权限
评论图片 审核、删除后访问
私信图片 只有会话双方可见
视频 格式、大小、转码、审核、播放权限

27. 敏感信息泄露怎么测

敏感信息泄露是安全测试常见问题。


27.1 接口返回检查

检查接口返回是否包含:

  • password
  • token
  • refreshToken
  • phone
  • email,公开场景要谨慎
  • ip
  • deviceId
  • adminRemark
  • riskTag
  • internalStatus
  • thirdPartyId

不是所有字段都绝对不能返回,要看业务场景。但公开接口、游客接口、他人主页接口尤其要谨慎。


27.2 页面和日志检查

  • 页面源代码是否暴露敏感配置
  • 错误页面是否暴露堆栈
  • 控制台是否输出 Token
  • 日志是否记录验证码、密码、Token
  • 导出文件是否包含不必要敏感字段

28. 密码与验证码安全怎么测


28.1 密码安全

测试点:

  • 密码复杂度符合产品规则
  • 密码不能明文展示
  • 修改密码需要身份验证
  • 修改密码后旧密码失效
  • 修改密码后旧 Token 是否失效
  • 密码错误次数过多是否限制

28.2 验证码安全

测试点:

  • 验证码有有效期
  • 验证码不能重复使用
  • 验证码错误次数过多是否限制
  • 短时间频繁发送验证码是否限制
  • 更换邮箱/手机号后旧验证码是否失效
  • 验证码不应出现在接口返回或日志中

29. 接口防刷、防重放、防频率攻击怎么测

社区接口容易被刷。


29.1 高频风险接口

  • 注册
  • 登录失败
  • 发送验证码
  • 发帖
  • 评论
  • 点赞
  • 关注
  • 私信
  • 举报
  • 搜索
  • 文件上传

29.2 测试点

  • 高频请求是否触发限制
  • 限制后提示是否清楚
  • 限制是否对页面和接口都生效
  • 不同账号、同一设备、同一 IP 是否有策略,按需求判断
  • 限制解除后是否恢复
  • 重复提交是否产生重复数据

30. 日志和错误信息安全怎么测

错误信息和日志也可能泄露安全信息。


30.1 错误信息测试点

  • 参数错误不应返回数据库错误
  • 服务异常不应返回堆栈信息
  • 文件上传失败不应暴露服务器路径
  • 登录失败提示不应过度暴露账号是否存在,按安全策略判断
  • 后台错误提示不应暴露内部服务地址

30.2 日志安全测试点

如果能查看日志,关注:

  • 是否记录明文密码
  • 是否记录验证码
  • 是否记录完整 Token
  • 是否记录完整手机号、邮箱,按脱敏要求
  • 是否记录用户私信明文,按合规和业务要求

31. 安全问题如何初步定位

测试同学不一定要完全定位安全漏洞根因,但可以帮助开发缩小范围。


31.1 定位思路

问题发生在哪个模块?
是页面问题还是接口问题?
是否和用户身份有关?
是否和资源归属有关?
是否和输入内容有关?
是否和文件类型有关?
是否和 Token 状态有关?
是否有接口返回或日志证据?

31.2 常见现象和可能原因

现象 可能原因
页面隐藏按钮但接口可操作 后端权限校验缺失
用户输入影响页面结构 前端未正确转义或过滤
上传不支持文件成功 文件类型校验不足
接口返回手机号 返回字段未脱敏或未裁剪
Token 退出后仍可用 登录态失效机制问题
参数错误返回 SQL 信息 后端异常处理不安全
普通用户访问后台接口成功 后台接口鉴权缺失

第四部分:用例、Bug 与总结

安全测试用例一定要写清楚:账号身份、资源归属、输入内容、接口请求、实际风险和预期安全行为。


32. 安全测试用例怎么写

安全测试用例建议包含:

  • 用例编号
  • 模块
  • 风险类型
  • 操作账号
  • 目标资源
  • 前置条件
  • 测试数据
  • 操作步骤
  • 预期结果
  • 是否验证数据未变化
  • 优先级

32.1 用例模板

字段 示例
用例编号 SEC_AUTH_001
模块 帖子删除
风险类型 水平越权
操作账号 普通用户B
目标资源 用户A的帖子 P001
前置条件 用户A已发布帖子 P001,用户B已登录
测试数据 userB_token,postId=P001
操作步骤 用户B调用删除帖子接口删除 P001
预期结果 返回无权限,帖子仍然存在,数据未变化
优先级 P0

32.2 示例用例:私信越权访问

字段 内容
用例编号 SEC_MSG_001
模块 私信
风险类型 隐私越权
操作账号 用户C
目标资源 用户A与用户B的会话 C001
前置条件 用户A和用户B存在私信会话 C001;用户C已登录
操作步骤 用户C调用会话消息列表接口访问 C001
预期结果 返回无权限或资源不存在;不返回任何消息内容
优先级 P0

32.3 示例用例:用户输入安全展示

字段 内容
用例编号 SEC_INPUT_001
模块 评论
风险类型 输入展示安全
操作账号 普通用户A
目标资源 帖子 P001
前置条件 帖子 P001 正常展示
测试数据 内部约定的安全测试字符串
操作步骤 用户A发表评论;查看评论列表、Feed摘要、通知、后台审核页
预期结果 内容作为普通文本安全展示,不破坏页面,不执行脚本
优先级 P0

33. 安全类 Bug 怎么提交

安全类 Bug 要写清楚风险影响,避免只写“接口有问题”。


33.1 安全 Bug 应包含

  • Bug 标题
  • 测试环境
  • 风险类型
  • 操作账号和角色
  • 目标资源归属
  • 请求信息,接口问题必填
  • 操作步骤
  • 实际结果
  • 预期结果
  • 风险影响
  • 复现概率
  • 截图、录屏、请求响应
  • 严重程度

33.2 示例 Bug:普通用户越权查看他人私信

标题

[安全][越权] 普通用户可通过会话接口查看其他用户私信内容

前置条件

测试环境:Test
用户A与用户B存在私信会话 C001
用户C为普通用户,未参与该会话

操作步骤

1. 用户C登录,获取 userC_token
2. 使用 userC_token 调用获取会话 C001 消息列表接口
3. 查看接口返回

实际结果

接口返回成功,响应中包含用户A与用户B的私信消息内容。

预期结果

用户C未参与该会话,无权查看私信内容。接口应返回无权限或资源不存在,不能返回任何消息内容。

风险影响

该问题会导致用户私信泄露,属于严重隐私安全问题。

严重程度

Critical

33.3 示例 Bug:接口返回敏感字段

标题

[安全][敏感信息泄露] 他人主页接口返回用户手机号字段

实际结果

用户A访问用户B公开主页接口时,响应中包含 phone 字段,返回了用户B完整手机号。

预期结果

公开主页接口不应返回手机号等私密字段。如业务需要展示,应按规则脱敏或仅本人可见。

风险影响

可能导致用户个人信息泄露。

严重程度

Critical

34. 新手常见误区

34.1 把安全测试当成攻击测试

安全测试不是随便攻击系统。

必须在授权范围内、测试环境中、安全地验证风险。


34.2 只测页面,不测接口

很多安全问题在接口层。

例如:

页面没有删除按钮,但接口仍然可以删除

34.3 只测普通用户,不测多角色

安全测试一定要覆盖:

  • 游客
  • 普通用户
  • 资源拥有者
  • 非资源拥有者
  • 被封禁用户
  • 版主
  • 管理员

34.4 不验证数据是否真的被修改

越权操作失败后,也要确认数据没有变化。

例如删除失败后,帖子仍然应该存在。


34.5 忽略错误信息和日志

错误信息里可能泄露:

  • 数据库表名
  • 服务路径
  • 堆栈信息
  • 内部 IP
  • Token
  • 验证码

这些也属于安全风险。


35. 最后总结

安全测试的核心不是“学会很多攻击名词”,而是要理解:

用户是谁?
他是否已登录?
他能不能访问这个资源?
他输入的内容是否被安全处理?
他上传的文件是否被限制?
接口是否返回了不该返回的数据?
错误信息是否泄露内部细节?
高频请求是否被限制?
后台功能是否严格鉴权?
用户隐私数据是否被保护?

对于海外社区论坛项目,最需要重点关注的安全方向是:

  • 注册登录安全
  • 第三方登录安全
  • Token / Cookie 安全
  • 水平越权和垂直越权
  • 用户输入安全
  • XSS 风险
  • 文件上传安全
  • 私信和通知隐私
  • 敏感信息泄露
  • 验证码和密码安全
  • 接口防刷
  • 后台管理安全
  • 用户数据导出和删除安全
  • 错误信息和日志安全

你可以记住一个万能安全测试公式:

身份 + 权限 + 输入 + 资源归属 + 数据返回 + 操作结果 = 安全测试场景

例如:

普通用户B + 无权限 + 删除接口 + 用户A帖子 + 不应返回成功 + 帖子不应被删除
用户C + 无权限 + 私信会话ID + 用户A/B会话 + 不应返回消息内容
普通用户 + 特殊输入 + 评论内容 + 前台和后台展示 + 应安全转义
游客 + 无 Token + 发帖接口 + 不应创建帖子

只要你每次测试安全问题时都围绕这些维度去拆,安全测试思路就会越来越清晰。