web系统安全管理

一、概述

认证、授权是JavaWeb项目的核心部分。

二、相关概念

1、认证Authentication

认证,简单来说,就是确认用户身份的过程,确认"你是谁"(验证身份)。

2、授权(Authorization)

授权(Authorization)是信息安全中确定"用户、设备或系统有权访问哪些资源或执行哪些操作"的过程。它建立在认证(Authentication)的基础上,是访问控制的核心环节。

3、会话管理(session Manager)

用户登录后就是一次会话,在没有退出之前,它的所有信 息都在会话中。

4、cookie

Cookie 是互联网中用于在客户端(通常是浏览器)和服务器之间存储和传递信息的一种机制。它由服务器生成,通过 HTTP 响应头发送给浏览器,浏览器会将其保存,并在后续的请求中自动回传给服务器。

  • 作用:用于实现会话状态管理(如用户登录状态)、个性化设置(如语言偏好)、用户行为跟踪(如广告定向)等。

  • 存储位置:客户端浏览器中(以键值对形式存储)。

  • 生命周期 :可以是临时的(会话 Cookie,关闭浏览器失效)或持久的(通过 ExpiresMax-Age 设置过期时间)。

5、token

Token 是一种用于身份验证和授权的凭证,通常由服务器生成并颁发给客户端,客户端在后续请求中携带 Token 以证明身份

  • 核心作用

    • 身份验证:验证用户是谁(如登录用户)。

    • 授权:授予用户访问特定资源的权限(如 API 访问权限)。

  • 常见形式:字符串(如 JWT、OAuth Token

6、session

Session 是服务器端用于跟踪用户状态的机制。服务器为每个用户创建一个唯一的会话标识(Session ID),并通过客户端(通常是浏览器)保存和传递该标识,从而关联用户请求。

三、拦截器

拦截器(Interceptor)是 Spring MVC 的核心组件,用于在请求处理流程中插入自定义逻辑。

主要

身份验证:检查用户是否登录。

日志记录:记录请求耗时、参数等信息。

权限控制:验证用户是否有权访问接口。

请求预处理:统一修改请求参数或头信息。

实现步骤如下 1 、2

(1) 创建拦截器类

实现 HandlerInterceptor 接口 重写以下方法:

preHandle():在 Controller 方法执行前调用(返回 true 则放行,false 则中断)。

postHandle():在 Controller 方法执行后、视图渲染前调用。

afterCompletion():在视图渲染后调用(通常用于资源清理)。

(2) 注册拦截器

通过配置类实现 WebMvcConfigurer,添加自定义拦截器并指定拦截路径。

四、过滤器

Filter 是 Java Servlet 规范中的组件,用于在请求到达 Servlet 或响应返回客户端执行预处理或后处理逻辑。

主要

请求日志记录:记录请求耗时、路径、参数等。

权限验证:检查用户权限或 Token。

字符编码处理:统一设置请求/响应的编码。

跨域处理:添加跨域请求头(CORS)。

敏感词过滤:替换请求或响应中的敏感内容。

Filter 的实现步骤

(1) 创建 Filter 类:实现 javax.servlet.Filter 接口,重写 init()doFilter()destroy() 方法。

(2) 注册 Filter:在 Spring Boot 中,除了使用 @WebFilter 注解,还需通过 FilterRegistrationBean 显式注册(推荐):

四、安全框架spring-boot-starter-security

spring-boot-starter-security是Spring Boot提供的一个用于快速集成应用安全功能的依赖库,基于Spring Security框架构建,旨在简化身份验证、授权、防护等安全配置。以下是其核心功能和使用说明。

核心功能

1、身份验证与授权:

提供多种身份验证方式(如表单登录、HTTP基本认证、OAuth等)12。

支持基于角色(Role-Based Access Control)的权限控制,通过注解(如@PreAuthorize)或配置实现细粒度的权限管理14。

2、用户存储与管理:

支持用户信息存储在内存、数据库或第三方服务(如LDAP、OAuth)中13。

可自定义UserDetailsService实现用户加载逻辑(如从数据库查询)34。

3、安全防护机制:

CSRF保护:默认开启跨站请求伪造防护,防止恶意攻击14。

会话管理:支持会话超时、并发会话控制等1。

密码加密:提供PasswordEncoder(如BCrypt)对用户密码进行加密存储24。

4、自动配置:

自动启用HTTP基本认证,默认生成一个用户名为user的账户,密码为随机UUID(每次启动不同)。

相关推荐
东阳马生架构2 分钟前
商品中心—1.B端建品和C端缓存的技术文档
java
Chan165 分钟前
【 SpringCloud | 微服务 MQ基础 】
java·spring·spring cloud·微服务·云原生·rabbitmq
LucianaiB8 分钟前
如何做好一份优秀的技术文档:专业指南与最佳实践
android·java·数据库
面朝大海,春不暖,花不开32 分钟前
自定义Spring Boot Starter的全面指南
java·spring boot·后端
得过且过的勇者y32 分钟前
Java安全点safepoint
java
夜晚回家1 小时前
「Java基本语法」代码格式与注释规范
java·开发语言
斯普信云原生组1 小时前
Docker构建自定义的镜像
java·spring cloud·docker
wangjinjin1801 小时前
使用 IntelliJ IDEA 安装通义灵码(TONGYI Lingma)插件,进行后端 Java Spring Boot 项目的用户用例生成及常见问题处理
java·spring boot·intellij-idea
wtg44521 小时前
使用 Rest-Assured 和 TestNG 进行购物车功能的 API 自动化测试
java
白宇横流学长2 小时前
基于SpringBoot实现的大创管理系统设计与实现【源码+文档】
java·spring boot·后端