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 和接口之间如果是明文传输的话,就可能会被拦截工具拦截;同时,数据库也存在安全问题,如果数据库的安全防范措施做的不够好时,就可能会导致数据注入,造成数据泄露的风险。

 

相关文章
|
应用服务中间件 API nginx
一个超长时间的http api 的 nginx 超时错误 java.io.IOException: unexpected end of stream on Connection
一个长时间的http api 的 nginx 超时错误 直接访问IP是OK的。但是经过了中间一台域名机子,配置了nginx (基本上所有的超时时间timeout配置项都配置了足够的时间)的proxy_pass到这个IP上。
7776 0
|
缓存 JavaScript 前端开发
vue-router学习二:动态路由(路由传递数据的一种方式),路由懒加载,嵌套路由,路由传递参数方式,导航守卫,keep-alive标签
这篇文章主要介绍了Vue Router的高级用法,包括动态路由、路由懒加载、嵌套路由、路由参数传递、导航守卫以及keep-alive的使用。
679 0
vue-router学习二:动态路由(路由传递数据的一种方式),路由懒加载,嵌套路由,路由传递参数方式,导航守卫,keep-alive标签
|
监控 安全 算法
本地部署MES生产管理系统,贝锐花生壳快速实现安全远程访问
随着制造企业信息化和数字化水平提升,MES系统广泛应用于制造业。为保护核心数据安全,MES系统通常部署在内部网络,导致远程访问困难。贝锐花生壳提供了一种基于内网穿透的解决方案,无需公网IP和专线,通过简单三步即可实现高效、安全的远程访问,帮助企业提升生产管理效率。
329 15
|
机器学习/深度学习 自然语言处理 搜索推荐
智能语音识别技术的现状与未来发展趋势####
【10月更文挑战第21天】 本文深入探讨了智能语音识别技术的发展脉络、当前主要技术特点及面临的挑战,并展望了其未来的发展趋势。通过分析传统声学模型与深度学习技术的融合、端到端建模的兴起以及多模态交互的探索,揭示了智能语音识别技术向更高精度、更强鲁棒性迈进的必然趋势。同时,文章也指出了数据隐私、噪声干扰等挑战,并提出了相应的解决方案和研究方向,为智能语音识别技术的未来发展提供了参考。 ####
1116 1
|
存储 安全 算法
加盐哈希的科学原理及其重要性
【8月更文挑战第31天】
797 0
|
Java 关系型数据库 MySQL
连接MySQL数据库的最优JDBC代码
连接MySQL数据库的最优JDBC代码
超材料,全球前13强生产商排名及市场份额
据QYResearch调研团队最新报告“全球超材料市场报告2023-2029”显示,预计2029年全球超材料市场规模将达到419.3亿美元,未来几年年复合增长率CAGR为65.0%。
超材料,全球前13强生产商排名及市场份额
|
XML Java Android开发
Android App开发手机阅读中实现平滑翻书效果和卷曲翻书动画实战(附源码 简单易懂 可直接使用)
Android App开发手机阅读中实现平滑翻书效果和卷曲翻书动画实战(附源码 简单易懂 可直接使用)
1035 0
C++ 过滤出字符串的中文(GBK,UTF-8)
C++ 过滤出字符串的中文(GBK,UTF-8)最近在处理游戏敏感词之类的东西,为了加强屏蔽处理,所以需要过滤掉字符串中的除汉字之外的是其他东西如数字,符号,英文字母等。 首先我查阅资料并写了个函数: 示例:返回输入字符串中汉字的个数: 复制代码std::string StrWithOutSymb...
4990 0
|
移动开发 前端开发 Android开发
WEB前端高频面试题(四)—— H5C3 八股文
WEB前端高频面试题(四)—— H5C3 八股文
341 0