SpringBoot论坛系统安全测试实战报告

作者:大飞

项目类型:自研论坛系统

技术栈:SpringBoot + MySQL + Thymeleaf

测试范围:黑盒安全测试(不依赖专业渗透工具)

时间成本:1天可完成所有测试并整理报告

适用场景:面试展示、项目总结、安全入门


一、测试目标

对本人基于SpringBoot开发的论坛系统,进行一轮Web安全测试 。测试重点参考OWASP Top 10漏洞类型,识别常见的安全风险,包括:

  • 输入注入类(XSS、SQL注入等)

  • 认证与会话类(未登录访问、权限绕过)

  • 接口暴露与信息泄露

  • 数据库存储安全

由于时间紧迫,本次测试不依赖Burp Suite、ZAP等安全工具 ,而是使用浏览器、Postman、数据库管理工具、日志文件分析完成。


二、测试环境说明

项目 描述
系统类型 自研论坛系统(支持注册、登录、发帖、私信)
后端框架 Spring Boot
前端模板 Thymeleaf
数据库 MySQL
测试方式 黑盒测试为主(模拟真实攻击)
使用工具 Postman + Chrome + 数据库客户端 + 日志查看器

三、安全测试用例(精选可落地)

1️⃣ 输入校验类

✅ S001 - 登录接口SQL注入
  • 输入:' OR 1=1 --

  • 测试点:SQL注入

  • 结果:页面有警告提示弹窗,标签已转义 ✅

✅ S002 - 注册昵称 XSS 测试
  • 输入<script>alert("XSS")</script>

  • 测试点:注册昵称字段

  • 结果:页面有警告提示弹窗,标签已转义 ✅

❌ S003 - 发帖功能存在严重存储型 XSS 漏洞

  • 测试点:发帖正文字段

  • 操作步骤

    1. 登录任意用户账号,进入发帖页面;

    2. 正文中输入:<script>alert("123")</script>

    3. 发布帖子后刷新页面;

    4. 页面立即弹窗,且之后所有新发的帖子页面也弹出该脚本,证明该代码被原样存储并执行。

  • 漏洞类型存储型 XSS(Stored Cross Site Scripting)

  • 影响等级:高危 🔥

  • 风险描述

    • 攻击者可插入任意脚本,包括盗取登录用户的Cookie,伪造请求(如发帖、私信),劫持会话;

    • 所有访问该贴的用户都将受影响;

    • 可进一步造成蠕虫式传播(如自动发帖携带XSS代码);

  • 漏洞原因

    • 服务端未对用户输入进行HTML转义或过滤;

    • 前端渲染时未使用安全的输出机制(如 th:text 而非 th:utext);

  • 安全建议

    • 后端输出转义 :使用 StringEscapeUtils.escapeHtml4() 或框架内建HTML转义工具;

    • 模板引擎渲染时使用 th:text,避免将用户输入当HTML渲染;

    • 可选增强:接入XSS过滤库(如 ESAPI、HtmlSanitizer)清除非法标签;

    • 安全测试建议:加入XSS Payload字典,覆盖注册、发帖、私信等所有富文本输入点进行回归测试。


✅ S005 - 超长字符串输入测试
  • 输入:昵称字段填入1万个字符

  • 结果 :系统提示"错误",未崩溃 ✅


2️⃣ 认证与权限类

✅ S009 - 未登录访问受限接口
  • 测试点 :直接访问 /user/profile

  • 结果:自动跳转登录页 ✅

✅ S011 - 水平越权删除他人帖子
  • 操作 :A用户登录,构造删除请求 post/delete?id=2(ID为B用户帖子)

  • 结果:提示无权限,操作失败 ✅

✅ S012 - 垂直越权修改管理员信息
  • 操作 :普通用户用Postman访问 /admin/update

  • 结果 :返回Whitelabel Error Page,禁止访问 ✅

✅ S014 - 无Token访问私密接口
  • 测试点 :访问 /api/private/data 不带Token

  • 结果 :接口返回Whitelabel Error Page ✅


3️⃣ 数据存储与接口安全类

✅ S015 - 密码加密存储检查
  • 查看 :MySQL user

  • 结果 :密码字段为加密串(疑似 BCrypt),无明文存储 ✅

✅ S016 - 注册接口返回字段检查
  • 测试点:注册成功后接口响应

  • 结果:未返回敏感字段,如密码、盐、token等 ✅

✅ S017 - 日志信息是否泄露敏感数据
  • 操作:多次输错密码,触发报错

  • 查看:控制台 + 日志文件

  • 结果:日志未打印用户输入 ✅

✅ S020 - 特殊符号输入处理测试
  • 输入'&*%$#<>

  • 测试点:发帖、注册、修改资料字段

  • 结果 :正常显示或被提示非法字符,未发生异常 ✅

✅ S021 - 事务一致性测试
  • 操作:发帖接口模拟异常(人为断网、字段缺失)

  • 结果:系统回滚,数据库无半条帖子 ✅


四、结论与建议

漏洞类型 状态 说明
存储型 XSS ❌ 存在严重漏洞 发帖功能存在存储型 XSS,脚本被存储进数据库并原样输出,可被利用盗Cookie、控制页面逻辑
输入校验 ✅ 合格 大部分字段具备长度限制、符号处理,未发现SQL注入/崩溃情况
会话控制 ✅ 合格 未登录访问私密接口被正确拦截,未发生Token越权等问题
权限控制 ✅ 合格 普通用户无法访问管理接口、删除他人数据等高权限行为
数据库存储安全 ✅ 合格 密码加密存储、日志无敏感信息泄露,注册响应未暴露内部字段
相关推荐
程序员cxuan40 分钟前
Loop 还没玩明白,Graph Engineering 又火了。
人工智能·后端·程序员
uzong1 小时前
把一面面试总结做成一个 Skill:重复的事,就别每次都重写
后端·面试
霸道流氓气质1 小时前
SpringBoot中基于 AES-GCM + KMS 密钥管理的数据加解密 Starter 实践
java·数据库·spring boot
程序员海军2 小时前
一个 AI 应用开发程序员的一天,都在屏幕前忙些什么?
前端·后端·程序员
乐观的Terry2 小时前
8、发布系统-完整流水线的核心
java·spring boot·spring·spring cloud
不能放弃治疗2 小时前
MCP
后端
万亿少女的梦1682 小时前
基于Spring Boot的游戏交易管理系统设计与实现
java·spring boot·mysql·系统设计·交易管理
江湖十年3 小时前
Go 语言中 YAML to JSON 踩坑笔记
后端·go·json
你驴我4 小时前
WhatsApp 消息撤回与编辑的幂等性设计实践
java·服务器·前端·后端·python
一缕清烟在人间4 小时前
HarmonyOS开发实战:小分享-TextEditPage文字编辑器——Header+TextArea+工具栏
后端·华为·harmonyos·鸿蒙