Spring Security 教程(01)、前言

安全层:从传输层到应用层的完整防护

Spring Security 配图
Spring Security 配图
Spring Security 配图

企业应用的安全不是单一功能,而是一层层叠加的防护体系。最底层是传输安全——使用 HTTPS 防止中间人攻击,确保数据在网络上加密传输。

接下来是网络层安全。防火墙隔离内网和公网,VPN 为远程访问提供加密隧道,DMZ 将面向公众的服务器与核心数据库分开部署。

操作系统层面也需要加固:使用非特权用户运行服务,限制文件系统权限,配置主机防火墙,定期打补丁。

在这些基础之上,你的 Java 虚拟机应该尽可能减少不同类型授予的权限,然后你的应用程序再增加自己的域特定安全配置。

Spring Security 解决的就是最后一层问题——应用层安全。 它让你的 Java 应用可以快速、灵活地实现认证和授权,而不需要从零开始写每一行安全代码。

为什么不要自己写认证授权逻辑

我见过太多团队自己实现登录验证:手写 SQL 查用户表、自己处理密码比对、自己管理 Session。这些代码看起来简单,但漏洞无处不在。

  • 密码明文存储或弱哈希(MD5、SHA1)
  • SQL 注入风险(用户输入直接拼接到查询)
  • Session 固定攻击(登录后不刷新 Session ID)
  • 暴力破解防护缺失(没有登录失败次数限制)
  • CSRF 攻击(表单提交没有 Token 验证)

这些问题 Spring Security 都已经帮你解决了。你只需要正确配置,不需要重新发明轮子。

Spring Security 能做什么

Spring Security 主要解决两个核心问题:认证(Authentication)和授权(Authorization)。

认证回答的问题是:你是谁?系统需要验证用户身份,通常通过用户名密码、OAuth Token、证书等方式。

授权回答的问题是:你能做什么?验证身份后,系统需要判断你是否有权限访问某个资源或执行某个操作。

除此之外,Spring Security 还提供:

  • CSRF 防护:防止跨站请求伪造攻击
  • 会话管理:Session 固定攻击防护、并发 Session 控制
  • 请求缓存:Remember-Me 自动登录
  • Web 安全过滤器链:对每个 HTTP 请求应用安全策略
  • 方法级安全:基于注解的接口访问控制

接下来读什么

tutorial-introduction 配图
tutorial-introduction 配图
tutorial-introduction 配图

如果你刚开始接触 Spring Security,建议从第 2 章”入门”开始,快速搭建一个可运行的安全应用。

如果你需要了解框架的内部架构和核心类,可以跳到第 25 章”架构和实现”。

本文档其余部分是按章节组织的引用式结构,设计用于按需查阅。建议尽可能通读一遍,建立完整的知识框架。

安全提醒:Spring Security 不是银弹,不能解决所有安全问题。安全需要在应用设计初期就纳入考虑,后期改造的成本远高于从一开始就做好安全设计。如果你是构建 Web 应用,还应该了解 OWASP 十大漏洞:跨站脚本(XSS)、请求伪造(CSRF)、会话劫持等。