当前位置: 首页 > java >正文

web系统安全管理

一、概述

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

二、相关概念

1、认证Authentication

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

2、授权(Authorization)

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

3、会话管理(session Manager)

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

4、cookie

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

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

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

  • 生命周期:可以是临时的(会话 Cookie,关闭浏览器失效)或持久的(通过 Expires 或 Max-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(每次启动不同)。

http://www.xdnf.cn/news/7011.html

相关文章:

  • Ubuntu22.04开机运行程序
  • ubuntu 安装mq
  • JUC入门(一)
  • 【MYSQL】笔记
  • 多用途商务,电子产品发布,科技架构,智能手表交互等发布PPT模版20套一组分享
  • C++函数基础:定义与调用函数,参数传递(值传递、引用传递)详解
  • JAVA SE 多线程(上)
  • Linux编译rpm包与deb包
  • ACL完全解析:从权限管理到网络安全的核心防线
  • 股票数据源对接技术指南:印度尼西亚、印度、韩国
  • 【PostgreSQL系列】PostgreSQL 复制参数详解
  • 架构思维:构建高并发扣减服务_分布式无主架构
  • Android开发——原生渲染方案实现 PDF 预览功能
  • 【 Redis | 实战篇 秒杀优化 】
  • 算法-js-最大矩形
  • 深度学习推理引擎---ONNX Runtime
  • 【电路笔记 STM32】 STM32CubeProgrammer 下载 安装 使用
  • 【ESP32】ESP-IDF开发 | 低功耗蓝牙开发 | GATT规范和ATT属性协议 + 电池电量服务例程
  • 单细胞转录组(3)
  • 单细胞转录组(2)单细胞测序原理
  • 5.2.1_2二叉树的性质
  • AUTOSAR图解==>AUTOSAR_SRS_V2XCommunication
  • 初探Reforcement Learning强化学习【QLearning/Sarsa/DQN】
  • docker-compose——安装mongo
  • C++文件操作--2 二进制文件操作
  • Java零基础学习Day15——面向对象进阶
  • 基于Fashion-MNIST的softmax回归-直接运行
  • dagster的etl实现
  • 硬件工程师笔记——二极管Multisim电路仿真实验汇总
  • 一分钟用 MCP 上线一个 2048 小游戏(CodeBuddy版)