• 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

    1. <dependencies>
    2. <!-- ... 其他依赖元素 ... -->
    3. <dependency>
    4. <groupId>org.springframework.boot</groupId>
    5. <artifactId>spring-boot-starter-security</artifactId>
    6. </dependency>
    7. </dependencies>

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

    pom.xml

    1. <properties>
    2. <spring-security.version>6.2.0-SNAPSHOTspring-security.version>
    3. properties>

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

    pom.xml

    1. <properties>
    2. <spring.version>6.1.0-M2spring.version>
    3. properties>

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

    2、没有使用 Spring Boot 的 Maven

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

    pom.xml

    1. <dependencyManagement>
    2. <dependencies>
    3. <!-- ... 其他依赖节点 ... -->
    4. <dependency>
    5. <groupId>org.springframework.security</groupId>
    6. <artifactId>spring-security-bom</artifactId>
    7. <version>{spring-security-version}</version>
    8. <type>pom</type>
    9. <scope>import</scope>
    10. </dependency>
    11. </dependencies>
    12. </dependencyManagement>

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

    pom.xml

    1. <dependencies>
    2. <!-- ... 其他依赖节点 ... -->
    3. <dependency>
    4. <groupId>org.springframework.security</groupId>
    5. <artifactId>spring-security-web</artifactId>
    6. </dependency>
    7. <dependency>
    8. <groupId>org.springframework.security</groupId>
    9. <artifactId>spring-security-config</artifactId>
    10. </dependency>
    11. </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 的 部分使用 spring-framework-bom。

    pom.xml

    1. <dependencyManagement>
    2. <dependencies>
    3. <!-- ... 其他依赖节点 ... -->
    4. <dependency>
    5. <groupId>org.springframework</groupId>
    6. <artifactId>spring-framework-bom</artifactId>
    7. <version>6.1.0-M2</version>
    8. <type>pom</type>
    9. <scope>import</scope>
    10. </dependency>
    11. </dependencies>
    12. </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

    1. <repositories>
    2. <!-- ... 可能有其他的Repository元素 ... -->
    3. <repository>
    4. <id>spring-snapshot</id>
    5. <name>Spring Snapshot Repository</name>
    6. <url>https://repo.spring.io/snapshot</url>
    7. </repository>
    8. </repositories>

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

    pom.xml

    1. <repositories>
    2. <!-- ... 可能有其他的Repository元素 ... -->
    3. <repository>
    4. <id>spring-milestone</id>
    5. <name>Spring Milestone Repository</name>
    6. <url>https://repo.spring.io/milestone</url>
    7. </repository>
    8. </repositories>

    二、文章系列 

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

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

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

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

  • 相关阅读:
    华为机试-字符串合并处理
    nginx配置不同通信协议的端口转发
    2022-06-17 工作记录--Vue-用$set赋值
    最小生成树:Prim和Kruskal算法原理及实现
    阿里云的流量价格表_2024阿里云服务器流量费用表
    mybatis-plus id在高并发下出现重复
    【融合ChatGPT等AI模型】Python-GEE遥感云大数据分析、管理与可视化及多领域应用
    Springboot礼品商城系统设计与实现q92av计算机毕业设计-课程设计-期末作业-毕设程序代做
    ES6-扩展运算符“...“
    并发编程的12种业务场景
  • 原文地址:https://blog.csdn.net/leesinbad/article/details/134063603