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 数据库连接
后端校验(hibernate-validator)
后端校验(hibernate-validator)
412 0
|
12月前
|
缓存 JavaScript 前端开发
vue-router学习二:动态路由(路由传递数据的一种方式),路由懒加载,嵌套路由,路由传递参数方式,导航守卫,keep-alive标签
这篇文章主要介绍了Vue Router的高级用法,包括动态路由、路由懒加载、嵌套路由、路由参数传递、导航守卫以及keep-alive的使用。
551 0
vue-router学习二:动态路由(路由传递数据的一种方式),路由懒加载,嵌套路由,路由传递参数方式,导航守卫,keep-alive标签
|
应用服务中间件 API nginx
一个超长时间的http api 的 nginx 超时错误 java.io.IOException: unexpected end of stream on Connection
一个长时间的http api 的 nginx 超时错误 直接访问IP是OK的。但是经过了中间一台域名机子,配置了nginx (基本上所有的超时时间timeout配置项都配置了足够的时间)的proxy_pass到这个IP上。
7720 0
|
9月前
|
机器学习/深度学习 编解码
1975 年至 2020 年全球居住人口估计值以 5 年为间隔,2025 年和 2030 年的人口预测值
该数据集描述了1975年至2020年全球居住人口的空间分布,以5年为间隔提供估计值,并预测2025年和2030年的人口分布。数据来自CIESIN GPWv4.11,基于普查数据分解到网格单元,结合GHSL全球建成区地表图层。分辨率为100米,支持研究和应用。项目由欧盟委员会和联合研究中心支持。
249 8
|
存储 Kubernetes 调度
k8s常见的排错指南Node,svc,Pod等以及K8s网络不通问题
k8s常见的排错指南Node,svc,Pod等以及K8s网络不通问题
4775 1
|
Unix Linux 应用服务中间件
Linux - chmod/chown命令与文件权限设置
Linux - chmod/chown命令与文件权限设置
468 0
|
编译器 C++
【C++类和对象下:解锁面向对象编程的奇妙世界】(上)
【C++类和对象下:解锁面向对象编程的奇妙世界】
124 0
|
Java Maven Spring
类文件具有错误的版本 61.0, 应为 52.0
类文件具有错误的版本 61.0, 应为 52.0
4304 0
|
SQL 域名解析 编解码
技术分享|Dnslog与Http外带
技术分享|Dnslog与Http外带
1741 0
|
编解码 计算机视觉
名声大噪的YOLO迎来YOLOv8,迅速包揽目标检测、实例分割新SOTA(2)
名声大噪的YOLO迎来YOLOv8,迅速包揽目标检测、实例分割新SOTA
413 0