Spring Security 探究

Spring Security 探究

Administrator 14 2024-10-11

环境搭建

简介:

SpringSecurity是针对Spring项目的安全框架,也是SpringBoot底层安全模块默认的技术选型,他可以实现强大的Web安全控制,对于安全控制,我们仅需要引入 spring-boot-starter-security 模块,进行少量的配置,即可实现强大的安全管理

pom.xml导入依赖

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-security</artifactId>
        </dependency>

主代码以及结构

图片-oasg.png

然后进行配置security,使得可以进行鉴权

创建一个config包,然后配置spring security代码

图片-dkyj.png

antMatchers 是 Spring Security 中用于基于路径模式配置 HTTP 请求授权规则的方法。它允许你指定哪些 URL 路径可以被哪些角色或权限访问,或者是否允许匿名用户访问。

antMatchers() 方法通过匹配指定的路径模式,定义该路径的安全规则。

它基于 Ant 风格的路径匹配语法,用于匹配 URL,例如 "/admin/**" 或 "/public/*"。

通过 antMatchers(),你可以设置哪些 URL 允许所有人访问,哪些 URL 需要认证或特定的权限才能访问。

所以,上述代码的解释为:

                  .antMatchers("/").permitAll()                          //根路径所有人都能访问
                  .antMatchers("/level1").hasRole("vip1")                //vip1才能访问 /level1
                  .antMatchers("/level2").hasRole("vip2")                //vip2才能访问 /level2
                  .antMatchers("/level3").hasRole("vip3")                //vip3才能访问 /level3

后续进行http.formLogin();设置鉴权,level1、level2、level3没有权限的话,跳转到登陆页

图片-tlzc.png

设置成功 如果访问/level1直接跳转登陆页面

图片-whqn.png

写好SpringSecurity的鉴权,接下来分析SpringSecurity权限绕过

antMatchers 配置不当权限绕过

图片-pcch.png

这里antMatchers("/level1").hasRole("vip1")只有vip1进行了身份认证,才能进入到/level1,否则是会进行跳转登陆页面。

图片-xlrm.png

这里是可以通过/level1/进行鉴权绕过

图片-wjvi.png

绕过鉴权成功

但是如果是以/level1/**这种方式进行鉴权的话,就可以避免使用/进行权限绕过

图片-oobx.png

图片-htwt.png

regexMatchers 配置不当权限绕过

regexMatchers 是 Spring Security 中的一种方法,允许使用正则表达式(regular expressions, regex)匹配 URL 路径。与 antMatchers 不同的是,regexMatchers 使用正则表达式来定义更加灵活、复杂的匹配规则,适合需要精准或复杂路径匹配的场景。

将鉴权处的antMatchers修改为regexMatchers

图片-fkew.png

由于regexMatchers配置不当,可以接着使用/level1/进行绕过

图片-lcyw.png

或者可以使用/level1?进行绕过

图片-ulmt.png

如果将正则修改为/level1/ 开头的任意路径

图片-ojyn.png

使用/level1/或者/level1?是无法绕过鉴权的

图片-uyma.png