Spring Security系例—漏洞防御

目录

一、在Maven中使用

1、Spring Boot 和 Maven

2、没有使用 Spring Boot 的 Maven

3、Maven 仓库(Repository)

二、文章系列 

​​​​​​​1、Spring Security漏洞防护—HTTP 安全响应头-CSDN博客

2、Spring Security —漏洞防护—跨站请求伪造(CSRF)-CSDN博客

3、Spring Security漏洞防护—HttpFirewall和 HTTPS-CSDN博客 


一、在Maven中使用

与大多数开源项目一样,Spring Security以Maven工件的形式部署其依赖项。本节中的主题描述了在使用Maven时如何使用Spring Security。

1、Spring Boot 和 Maven

Spring Boot提供了一个 spring-boot-starter-security starter,聚合了Spring Security相关的依赖。使用starter的最简单和首选方式是通过使用IDE集成( Eclipse 或 IntelliJ、 NetBeans)或通过 start.spring.io 使用 Spring Initializr。另外,你也可以手动添加starter,如下面的例子所示。

官方的 Spring Initializr 服务在国外,在国内经常不能访问。推荐使用 SpringBoot中文社区 提供的 start.springboot.io 镜像服务。

pom.xml

<dependencies><!-- ... 其他依赖元素 ... --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-security</artifactId></dependency>
</dependencies>

由于Spring Boot提供了一个Maven BOM来管理依赖版本,所以你不需要指定一个版本。如果你想覆盖Spring Security的版本,你可以通过提供一个Maven属性来实现。

pom.xml

<properties><!-- ... --><spring-security.version>6.2.0-SNAPSHOT</spring-security.version>
</properties>

由于Spring Security只在主要(MAJOR)的版本中进行突破性的修改,所以你可以安全地在Spring Boot中使用较新版本的Spring Security。不过,有时你可能也需要更新Spring Framework的版本。您可以通过添加一个Maven属性来做到这一点。

pom.xml

<properties><!-- ... --><spring.version>6.1.0-M2</spring.version>
</properties>

如果你使用额外的功能(如LDAP、OAuth 2 和其他),你还需要包括 适当的项目模块和依赖。

2、没有使用 Spring Boot 的 Maven

当你在没有Spring Boot的情况下使用Spring Security时,首选方式是使用Spring Security的BOM,以确保在整个项目中使用一致的Spring Security版本。下面的例子展示了如何做到这一点。

pom.xml

<dependencyManagement><dependencies><!-- ... 其他依赖节点 ... --><dependency><groupId>org.springframework.security</groupId><artifactId>spring-security-bom</artifactId><version>{spring-security-version}</version><type>pom</type><scope>import</scope></dependency></dependencies>
</dependencyManagement>

一个最小的Spring Security Maven依赖集通常看起来像下面的例子。

pom.xml

<dependencies><!-- ... 其他依赖节点 ... --><dependency><groupId>org.springframework.security</groupId><artifactId>spring-security-web</artifactId></dependency><dependency><groupId>org.springframework.security</groupId><artifactId>spring-security-config</artifactId></dependency>
</dependencies>

如果你使用额外的功能(如LDAP、OAuth 2 和其他),你还需要包括 适当的项目模块和依赖。

Spring Security 是针对 Spring Framework 6.1.0-M2 构建的,但一般来说应该可以与Spring Framework 5.x 的任何较新版本一起使用。许多用户可能会遇到 Spring Security 的横向依赖会“定义” Spring Framework 6.1.0-M2 的问题,这会导致奇怪的classpath问题。解决这个问题的最简单方法是在 pom.xml 的 <dependencyManagement> 部分使用 spring-framework-bom。

pom.xml

<dependencyManagement><dependencies><!-- ... 其他依赖节点 ... --><dependency><groupId>org.springframework</groupId><artifactId>spring-framework-bom</artifactId><version>6.1.0-M2</version><type>pom</type><scope>import</scope></dependency></dependencies>
</dependencyManagement>

前面的例子确保 Spring Security 的所有横向依赖都使用 Spring 6.1.0-M2 模块。

这种方法使用Maven的 “bill of materials” (BOM)概念,仅在Maven 2.0.9以上版本中可用。关于如何解决依赖关系的其他细节,请参阅 Maven的依赖机制介绍文档。

3、Maven 仓库(Repository)

所有GA版本(即以.RELEASE结尾的版本)都会被部署到Maven Central,所以你不需要在pom中声明额外的Maven repository。

如果你使用SNAPSHOT版本,你需要确保你已经定义了 Spring Snapshot repository。

pom.xml

<repositories><!-- ... 可能有其他的Repository元素 ... --><repository><id>spring-snapshot</id><name>Spring Snapshot Repository</name><url>https://repo.spring.io/snapshot</url></repository>
</repositories>

如果你使用里程碑(milestone)或候选版本(release candidate),你需要确保你已经定义了 Spring Milestone Repository,如下例所示。

pom.xml

<repositories><!-- ... 可能有其他的Repository元素 ... --><repository><id>spring-milestone</id><name>Spring Milestone Repository</name><url>https://repo.spring.io/milestone</url></repository>
</repositories>

二、文章系列 

1、Spring Security—配置(Configuration)-CSDN博客

2、Spring Security漏洞防护—HTTP 安全响应头-CSDN博客

3、Spring Security —漏洞防护—跨站请求伪造(CSRF)-CSDN博客

4、Spring Security漏洞防护—HttpFirewall和 HTTPS-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/124827.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【CSDN 每日一练 ★☆☆】【数组/数学】加一

【CSDN 每日一练 ★☆☆】【数组/数学】加一 数组 数学 题目 给定一个由 整数 组成的 非空 数组所表示的非负整数&#xff0c;在该数的基础上加一。 最高位数字存放在数组的首位&#xff0c; 数组中每个元素只存储单个数字。 你可以假设除了整数 0 之外&#xff0c;这个整…

elasticsearch存储数据压缩

一.前言 elk是流行的日志监控分析平台&#xff0c;但es占用存储空间过大&#xff0c;下面介绍几种压缩方案。 二.方案 1.禁用不需要的特性 不需要分词的字段&#xff0c;禁用text类型&#xff0c;使用keyword.&#xff08;我们所有字段都是keyword&#xff09; 2.使用更高…

MAC缓解WebUI提示词反推

当前环境信息&#xff1a; 在mac上安装好stable diffusion后&#xff0c;能做图片生成了之后&#xff0c;遇到一些图片需要做提示词反推&#xff0c;这个时候需要下载一个插件&#xff0c;参考&#xff1a; https://gitcode.net/ranting8323/stable-diffusion-webui-wd14-tagg…

虚拟机构建单体项目及前后端分离项目

引言 在现代化办公环境中&#xff0c;会议是组织沟通、决策和合作的重要方式之一。为了提高会议的效率和质量&#xff0c;许多企业选择部署会议OA系统来实现会议管理的自动化和数字化。本博客将介绍如何部署和优化会议OA系统&#xff0c;并探讨前后端分离的SPA项目在此过程中的…

66 内网安全-域横向批量atschtasksimpacket

目录 演示案例:横向渗透明文传递at&schtasks 案例2-横向渗透明文HASH传递atexec-impacket案例3-横向渗透明文HASH传递批量利用-综合案例5-探针主机域控架构服务操作演示 传递攻击是建立在明文和hash值的一个获取基础上的攻击&#xff0c;也是在内网里面常见协议的攻击&…

python pandas提取正无穷inf与负无穷-inf所在数据行/列

dataframe.replace([np.inf, -np.inf], np.nan,inplaceTrue) # 替换值然后再删除所在行&#xff1a; dataframe.dropna(inplaceTrue)或是删除所在列&#xff1a; dataframe.dropna(axis1,inplaceTrue)示例程序 import numpy as np import pandas as pddataframe.replace([np…

Linux环境下安装ES

更多ElasticSearch教程&#xff1a;点击查看 1. 先新建一个用户&#xff08;出于安全考虑&#xff0c;Elasticsearch默认不允许以root账号运行。&#xff09; 创建用户&#xff1a; useradd esuser 设置密码&#xff1a; passwd esuser2. 下载ES安装包并解压到es目录 修改ES…

一道简单的C#面试题

试题&#xff1a; 抽顺序问题&#xff1a;有10位面试者&#xff0c;需要随机抽号面试。 1&#xff09;总共十个号数&#xff0c;用数组表示&#xff1b; 2&#xff09;每一位面试者输入1开始抽签&#xff0c;然后得到抽签号&#xff0c;输入2结束抽签&#xff1b; 3&#x…

深度学习02-数据集格式转换

背景&#xff1a; 通常搜集完数据图片后&#xff0c;我们会用labelimg进行图片标注&#xff0c;比较高版本的labelimg支持的标注格式有三种&#xff0c;PascalVOC、YOLO、CreateML&#xff0c;标注的时候可以根据自己的算法模型数据集需求选择相应的格式&#xff0c;当然&…

Linux玩物志:好玩却无用的软件探秘

W...Y的主页 &#x1f60a; 代码仓库分享&#x1f495; &#x1f354;前言&#xff1a; 我们已经学习了yum指令&#xff0c;可以在Linux中安装一些软件的指令。下面我们就盘点一些可玩性很高但是却没有什么用的软件&#xff0c;在枯燥的学习中增添一丝乐趣&#xff01; For…

CSS宽度100%和宽度100vw之间有什么不同?

vw和vh分别代表视口宽度和视口高度。 使用width: 100vw代替的区别在于width: 100%&#xff0c;虽然100%将使元素适合所有可用空间&#xff0c;但视口宽度具有特定的度量&#xff0c;在这种情况下&#xff0c;可用屏幕的宽度 。 如果设置样式body { margin: 0 }&#xff0c;则1…

2000-2021年上市公司产融结合度量数据

2000-2021年上市公司产融结合度量数据 1、时间&#xff1a;2000-2021年 2、指标&#xff1a;股票代码、年份、是否持有银行股份、持有银行股份比例、是否持有其他金融机构股份、产融结合 3、来源&#xff1a;上市公司年报 4、范围&#xff1a;上市公司 5、样本量&#xff…

gRPC源码剖析-Builder模式

一、Builder模式 1、定义 将一个复杂对象的构建与表示分离&#xff0c;使得同样的构建过程可以创建不同的的表示。 2、适用场景 当创建复杂对象的算法应独立于该对象的组成部分以及它们的装配方式时。 当构造过程必须允许被构造的对象有不同的表示时。 说人话&#xff1a…

java基础篇-环境变量

java基础 编程学习的关键点、重点1.环境变量设置待续 编程学习的关键点、重点 输入输出 Java语言、C语言、Python语言、甚至SQL语言&#xff0c;都需要实战、做大量输入输出等 1.环境变量设置 1.下载jdk安装 jdk官网下载直达链接&#xff1a;https://www.oracle.com/java/te…

Word插入Latex语句并编译为数学公式

WPS不可行&#xff0c;正版word可以&#xff08;垃圾WPS&#xff09; 选中Latex语句并按下Alt &#xff08;此处以后补一张图&#xff09; 该方法不需要额外安装什么插件哦&#xff01;

system verilog VSCode Windows 配置简述

system verilog VSCode Windows 配置简述 本文章的目的并非完全在 VSCode 中进行 system verilog 编程&#xff0c;而是以 vivado 为核心&#xff0c;将 VSCode 作为编译器。 配置步骤 安装 ctags choco install universal-ctags如果你没有安装 chocolatey&#xff0c;见 i…

[Unity] 个人编码规范与命名准则参考

Unity C# 在写的过程中, 和纯 C# 是有很大出入的. 甚至说, Unity C# 就是邪教. 例如它的命名规范与 C# 是不一致的, 而且由于游戏引擎的介入, 编写时的习惯相较于 C# 来讲, 也需要有所改变. 通用编码规范 常见的一些编码规范就不需要过多提及了, 这里只做简单列举. 添加合适…

2023香港秋灯展丨移远通信闪耀亮相,开启Matter生态互联新篇章

10月27日&#xff0c;2023香港国际秋季灯饰展于香港会议展览中心正式开幕。 移远通信携最新一站式Matter解决方案、Wi-Fi模组&#xff0c;以及多款代表前沿技术的智能灯具、插座等终端重磅亮相。同时&#xff0c;公司产品总监丁子文围绕“Matter生态互联新篇章”主题发表演讲&a…

深度学习之基于YoloV8的行人跌倒目标检测系统

欢迎大家点赞、收藏、关注、评论啦 &#xff0c;由于篇幅有限&#xff0c;只展示了部分核心代码。 文章目录 一项目简介 二、功能三、行人跌倒目标检测系统四. 总结 一项目简介 世界老龄化趋势日益严重&#xff0c;现代化的生活习惯又使得大多数老人独居&#xff0c;统计数据表…

Zynq UltraScale+ XCZU7EV 纯VHDL解码 IMX214 MIPI 视频,2路视频拼接输出,提供vivado工程源码和技术支持

目录 1、前言免责声明 2、我这里已有的 MIPI 编解码方案3、本 MIPI CSI2 模块性能及其优越性4、详细设计方案设计原理框图IMX214 摄像头及其配置D-PHY 模块CSI-2-RX 模块Bayer转RGB模块伽马矫正模块VDMA图像缓存Video Scaler 图像缓存DP 输出 5、vivado工程详解PL端FPGA硬件设计…