云计算百科
云计算领域专业知识百科平台

Sping Boot安全再理解(笔记)

0.前言

该文章仅作为笔记使用,把之前学的那么多东西进行了简单的整合

1.完整请求流程

浏览器 / 前端
│ HTTP 请求

Tomcat / Jetty(HTTP 服务器、Servlet 容器)

Filter(过滤器:登录、跨域、日志等)

Spring MVC 的 DispatcherServlet(统一入口)
│ 根据 URL、HTTP 方法寻找 Controller

Controller(接收参数、返回结果)

Service(业务逻辑)

Mapper / Repository(访问数据库)

MySQL / PostgreSQL / Redis / Elasticsearch

2.对应漏洞

层次主要职责常见漏洞
浏览器前端 页面展示、用户交互 XSS、CSRF、DOM污染、开放重定向、点击劫持
Tomcat 接收HTTP、Servlet容器 PUT不安全配置、Ghostcat、Manager弱口令、组件版本漏洞
Spring MVC 请求路由、参数绑定 Spring4Shell、数据绑定问题、路径处理问题
Filter / Security 身份认证和访问控制 认证绕过、权限规则遗漏、JWT使用错误、CORS配置错误
Controller 接收参数、组织接口 越权、参数校验缺失、文件上传、路径穿越、开放重定向
Service 执行业务规则 业务逻辑漏洞、竞态条件、状态绕过、金额和库存问题
Mapper 拼接和执行SQL SQL注入、越权查询、过量数据返回
序列化层 JSON与对象转换 Jackson不安全反序列化、类型混淆、敏感字段暴露
外部访问 调用URL或系统命令 SSRF、命令注入、XXE、任意文件读写
运维配置 部署、管理、监控 Actuator暴露、默认口令、密钥泄露、错误信息泄露

Spring Boot负责组装和自动配置。
Tomcat负责接收和发送 HTTP 数据。
Spring MVC负责把请求分配给 Controller。
Jackson负责 JSON 与 Java对象互转。
Controller负责接口层。
Service负责业务逻辑。
Mapper/Repository负责数据库访问。
Maven/Gradle负责构建项目。
JDK编译器负责把 .java 编译成 .class。
JVM负责运行 .class。
InputStream/OutputStream是底层数据读写方式。

3.Spring Boot项目中的常用组件

常见组合可以这样理解:

组件作用
Spring Core 对象管理、依赖注入
Spring Boot 自动配置、启动和整合
Spring MVC HTTP接口、请求路由、参数转换
Tomcat / Jetty 接收网络请求、运行 Servlet
Jackson Java对象与 JSON互转
Hibernate Validator 参数校验
Spring Security 登录、认证、权限控制
MyBatis / MyBatis-Plus 编写和执行 SQL
Spring Data JPA / Hibernate ORM数据库访问
JDBC Java访问关系型数据库的基础接口
HikariCP 数据库连接池
Spring Transaction 数据库事务
Redis客户端 访问 Redis
Spring Cache 缓存抽象
Spring AOP 日志、事务等横切逻辑
Actuator 健康检查、监控信息
Logback / SLF4J 日志
Maven / Gradle 依赖、编译、测试、打包
JUnit / Mockito 单元测试和模拟依赖
赞(0)
未经允许不得转载:网硕互联帮助中心 » Sping Boot安全再理解(笔记)
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!