SpringBoot2.6 安全机制与实战开发(一)|学习笔记

简介: 快速学习 SpringBoot2.6 安全机制与实战开发(一)

开发者学堂课程【Java Spring Boot 2.6.0开发实战-1024程序员节创造营公益课 SpringBoot2.6 安全机制与实战开发(一)】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址https://developer.aliyun.com/learning/course/903/detail/14343


SpringBoot2.6 安全机制与实战开发(一)


目录:

一, 安全机制介绍

二,安全漏洞介绍

三,Java Spring Security 介绍

四,Java 安全框架 Shiro 介绍

五,Spring Security Demo 介绍

六,WebSecurityConfig 介绍

七,Web 全站安全验证配置

八,实战代码展示

九,Java 面试题


一, 安全机制介绍

1.自定义实现安全验证

2. Apache Shiro 开源框架

3. Spring Security 开源框架

4.大量使用 AOP

5.依赖注入思想

6.灵活扩展

Springboot2.5 安全机制示意图:

image.png

 

生活中的安全机制:

我们在开发接口给客户端的 APP 调用,那么我们又该如何保证接口的安全呢?

我们在日常生活中使用的淘宝,微信,抖音以及其他的一些电商平台如京东,拼多多都使用了安全机制验证,如密码验证,验证码验证,

提成支付宝或者是微信等等。目前在一些重要的行业(金融,政府部门)还有一种非常流行的安全验证方式那就是:人脸识别。

虽然人脸识别无法做到百分之百的准确,但是也可以做到百分之九十以上的准确率了。现在市场上还有指纹识别验证,这也是一种安全验证方式。

其中,安全度较高的是指纹识别,瞳孔识别,人脸识别。常见的账号密码验证过程,首先会确定你的账号密码是否有效,然后再查询你的权限。国内目前绝大部分的 APP 都有使用微信,淘宝,支付宝登录,这是一种比较常见的登录方式。

此外,还有基于令牌登录的,捆绑 APP 去识别后台 api 的接口的请求。


二,安全漏洞介绍

1. Spring Boot 2020年9月份修复漏洞

2. Spring Boot Actuator 未授权访问远程代码执行漏洞

3.紧急修复 Spring Framework 版本包含一个安全漏洞 (CVE-

2020-5421)的修复程序。此漏洞可以通过 sessionld 绕过 RFD (反射型文件下载)保护

4.Spring Boot 2018 年修复了一些安全漏洞

5.建议使用最新的 Spring 5.0+ 版本

6. Spring 框架升级5.0.0 - 5.0.2

7. Spring 框架升级4.3.0 - 4.3.13

8. Spring Boot 1.5.10

介绍:框架漏洞以及程序漏洞是我们普通程序员及普通人所不能察觉到的,框架漏洞我们只需了解一下就可以了,一般大公司都会有安全检查员。

生活中发生过的安全漏洞事件:一几年时就曾经出现过12306用户账名及密码泄露事件,有可能是因为数据库是用明文写的,我们自己在做时一定不要忘了加密。

开源框架中比较有名的就是 spring,springboot 等等。如今,spring 被广泛认同为一个平台。

 

三,Java Spring Security 介绍

1. Spring Security 功能强大且高度可自定义的安全框架。

2.保护 Spring 应用系统的安全标准。

3. Spring Security 专注于身份验证和授权。

4.容易地扩展、自定义开发

5.前身是 Acegi Security,

6.提供安全认证服务的框架。

7.Spring Security 为基于 J2EE 企业应用提供了全面安全机制。

8.Authentication 验证和 Authorization 授权

9.抵御会话攻击,点击劫持,CSRF 跨站请求伪造。

 

四,Java 安全框架 Shiro 介绍

1. Apache Shiro 简单易用的开源 Java 安全框架,

2.轻松实现身份验证、授权、加密和会话管理。

3.使用 Shiro 可以快速实现系统安全。

4.Shiro 其前身是 Jsecurity 项目

5. Shiro 可以轻易实现 Java 网站安全验证

6.可应用于 Web 环境,非 Web 环境

7.支持多种数据源 MySQL 等

8.如LDAP,JDBC, Kerberos,ActiveDirectory )

缺陷:并不是 spring 家族中的一员,可能存在与 spring 集成的版本不兼容问题。

 

五,Spring Security Demo 介绍

加入以下依赖即可完成集成:

l <dependencies>

l …

l <dependency>

l <groupld>org.springframework.boot</groupld>

l <artifactld>spring-boot-starter-security</artifactld>

l </dependency>

l …

l </dependencies>
l <dependencies>l …l <dependency>l <groupld>org.springframework.boot</groupld>l <artifactld>spring-boot-starter-security</artifactld>l </dependency>l …l </dependencies>


六,WebSecurityConfig 介绍

1.Spring Security 的配置类

2.WebSecurityConfig

3.可以配置安全规则

4.默认启用 basic 验证

5.# Spring Security 可以在配置文件中关闭

6.security.basic.enabled = false

 

七,Web 全站安全验证配置

l @Configuration

l @Order(SecurityProperties.BASIC_AUTH_ORDER - 10)

l public class ApplicationConfigurerAdapter extendsWebSecurityConfigurerAdapter {

l @Override

l protected void configure(HttpSecurity http) throws Exception{

l http.antMatcher("/admin/**")

l authorizeRequests()

l antMatchers("/admin/users").hasRole( "usersAdmin")

l antMatchers("/admin/orders").hasRole(

ordersAdmin")

l anyRequest().isAuthenticated();}}

注意:目前我们默认的 springboot 底层使用的是 MVC,MVC 是基于 serverlet 进行运转的。

框架会自己帮程序员把底层的一些基本配置安装打包好(如底层拦截器)。上面代码的意思是,如果我请求地址包含了一个字符串,我们就会认为他访问的是一个带 admint 的一套网页,前台没问题,且必须登录,@Order 的意思就是对他进行身份验证。

我们也可以定义多个地址,匹配规则也是如此。目前大部分的电商平台都设置了许多的管理员,其职责各不相同。比如前段时间比较火的鉴黄师。

我们可以自己做一个万能的请求拦截器,如我们可以在把请求拦截下来以后,可以从用户请求消息头里面拿一个值,当用户访问登录模块时,请求里面便会出现用户密码,APP 端口过来时便一定会传回来一个 token。框架可以优化操作。

网站的安全包括很多方面,不单单只是账号密码验证,在数据传输的过程其实也是存在安全隐患的,用户 APP 和接口之间如果是明文传输的话,就可能会被拦截工具拦截;同时,数据库也存在安全问题,如果数据库的安全防范措施做的不够好时,就可能会导致数据注入,造成数据泄露的风险。

 

相关文章
|
Java 数据库连接 开发者
|
6月前
|
存储 缓存 NoSQL
SpringBoot实用开发篇第四章(整合缓存技术)
SpringBoot实用开发篇第四章(整合缓存技术)
|
存储 搜索推荐 Java
6 种方式读取 Springboot 的配置,老鸟都这么玩(原理+实战)
6 种方式读取 Springboot 的配置,老鸟都这么玩(原理+实战)
436 0
6 种方式读取 Springboot 的配置,老鸟都这么玩(原理+实战)
|
canal 监控 数据可视化
好家伙!阿里最新SpringBoot进阶笔记涵盖了SpringBoot所有骚操作
相信从事Java开发的朋友都听说过SSM框架,老点的甚至经历过SSH,说起来有点恐怖,比如我就是经历过SSH那个时代未流。当然无论是SSM还是SSH都不是今天的重点,今天要说的是Spring Boot,一个令人眼前一亮的框架,从大的说,Spring Boot是取代了SSM中的SS的角色。
|
druid Java 关系型数据库
SpringBoot整合第三方技术 -- SpringBoot快速入门保姆级教程(三)
SpringBoot整合第三方技术 -- SpringBoot快速入门保姆级教程(三)
150 0
|
存储 缓存 Java
第一篇:SpringBoot高级-缓存入门
JSR107 Java Caching定义了5个核心接口,分别是CachingProvider, CacheManager, Cache, Entry和Expiry。
1521 0
|
SQL 缓存 NoSQL
SpringBoot2.6 安全机制与实战开发(二)|学习笔记
快速学习 SpringBoot2.6 安全机制与实战开发(二)
|
前端开发 Java 应用服务中间件
SpringBoot的Web开发支持【超详细【一篇搞定】果断收藏系列】上
SpringBoot的Web开发支持【超详细【一篇搞定】果断收藏系列】
SpringBoot的Web开发支持【超详细【一篇搞定】果断收藏系列】上
|
NoSQL Java Redis
springboot面试杀手锏-自动配置原理
springboot面试杀手锏-自动配置原理
springboot面试杀手锏-自动配置原理
|
Java 应用服务中间件 Redis
SpringBoot(高级原理分析)(上)
SpringBoot(高级原理分析)(上)
169 0
SpringBoot(高级原理分析)(上)