《spring security in action》读书笔记

在这里插入图片描述

1. why

spring security 是强大的高度可定制的 身份验证 和 访问控制 应用级框架。

常见的漏洞包含:
身份验证失效,会话固定,跨站脚本xss请求伪造,CSRF注入敏感数据泄漏缺乏方法访问控制。

身份验证失效:
不能仅仅验证用户是否登陆,而要验证检索数据的用户是否是合法用户。

会话固定:
允许攻击者通过重复使用先前生成的会话ID来冒充有效用户。所以每次请求的 token 最好是可变的。

跨站脚本(xss):
允许将客户端脚本注入到服务器公开的 Web 服务中,从而允许其他用户运行这些服务。恶意脚本等等。

跨站请求伪造(CSRF):
在这里插入图片描述
注入攻击:
注入客户端脚本、SQL注入、XPath注入、操作系统命令注入、LDAP注入等等。要对用户的行为进行限制,输入内容进行校验,不能让他们有对系统进行损害的操作。比如 mybatis sql 注入,linux 命令 cd 到上一个目录,删除其他用户目录文件等等。

处理敏感数据的暴漏:
机密数据的泄漏,比如访问用户的时候,返回什么信息。本人登陆的时候可以返回用户名,手机号等等,但是其他相关用户只能看到它的用户名。公开的一些文件和数据集,不允许进行写操作等等。一些异常信息,可能会暴漏代码结构等等。

使用具有已知漏洞的依赖:
比如我们使用的包版本包含漏洞,那么我们就要及时更新来修复漏洞。

通过 spring security 来解决以上的问题。

2. demo

在这里插入图片描述
OAuth2授权流程:
用户访问应用程序中的用例,需要调用后端资源,必须获得访问权限 token ,发送用户凭据或刷新令牌。
如果凭据或者刷新令牌正确,授权服务器返回一个访问令牌给客户端。
向资源服务器请求的标头使用访问令牌时调用所需的资源。
在这里插入图片描述

一般401用于失败的身份验证,403意味着服务器识别了调用者请求,但是没有调用需要的权限。

在这里插入图片描述

spring security身份验证过程中各种组件之间的关系:

请求被过滤器拦截(authentication filter)——> 认证委托给(authentication manager)——> manager 使用(authentication provider)来实现身份验证——>provider 找到用户的详细信息,并使用密码校验验证密码——>认证结果返回给过滤器——>有关身份验证的实体详细信息存储在 security 上下文中。

3. 管理用户

  1. 处理密码
  2. 身份验证
  3. 实践:小型安全web应用程序
  4. 配置授权:闲置访问
  5. 配置授权:应用限制
  6. 实施过滤器
  7. 应用CSRF保护和CORS
  8. 实践:职责分离
  9. OAuth2如何工作
  10. OAuth2:实现授权服务器
  11. OAuth2:实现资源服务器
  12. 使用JWT和加密签名
  13. 全局方法安全性:授权前和授权后
  14. 全局方法安全性:授权前和过滤后
  15. 实践:Oauth2应用程序
  16. 用于反应式应用程序的Spring Security
  17. Spring Security 测试

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/98698.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[尚硅谷React笔记]——第3章 React应用(基于React脚手架)

目录: react脚手架创建项目并启动react脚手架项目结构一个简单的Hello组件样式的模块化功能界面的组件化编码流程(通用)组件的组合使用-TodoList 1.react脚手架 xxx脚手架: 用来帮助程序员快速创建一个基于xxx库的模板项目 包含了所有需…

/lib64/libstdc++.so.6: version `GLIBCXX_3.4.21‘ not found (required by

在某项目中遇到下面的错误, ./model2trt_v2: /lib64/libstdc.so.6: version GLIBCXX_3.4.21 not found (required by ./model2trt_v2) ./model2trt_v2: /lib64/libstdc.so.6: version GLIBCXX_3.4.21 not found (required by ../../../lib/linux_lib/libcuda_utils…

mysql中varchar长度为多少

一. varchar存储规则: 4.0版本以下,varchar(20),指的是20字节,如果存放UTF8汉字时,只能存6个(每个汉字3字节) 5.0版本以上,varchar(20),指的是20字符,无论存…

QT之可自由折叠和展开的布局

介绍和功能分析 主要是实现控件的折叠和展开,类似抽屉控件,目前Qt自带的控件QToolBox具有这个功能,但是一次只能展开一个,所以针对自己的需求可以自己写一个类似的功能,这里实现的方法比较多,其实原理也比较…

Flink: Only supported for operators

Exception in thread "main" java.lang.UnsupportedOperationException: Only supported for operators.at org.apache.flink.streaming.api.scala.DataStream.name(

2023.10.02 win7x64sp1下Navicat_Premium15_x86连接Oracle_10g(安装在win2003x86)

Oracle_10g安装在这个版本的系统里: Microsoft Windows [版本 5.2.3790] 这个win2003_x86(分配内存1G)安装在vmware虚拟机里. 安装包文件名为:oracle 10g_win32.zip 大小约624 MB (655,025,354 字节) 安装完毕后,tcp1521端口应该开放: Microsoft Windows [版本 5.2.3790]…

C语言中volatile/register/const/static/extern/auto关键字的作用

目录 一、volatile 二、register详解 三、const详解 四、static详解 五、extern详解 语法 作用 六、auto详解 突然想总结一下这些关键字的作用,灵活使用这些对程序的可靠性和速率都有提高 一、volatile volatile是防止编译器优化,如果是高频繁…

【Spring MVC研究】DispatcherServlet如何处理请求(doDispatcher方法)

文章目录 1. 最经典的MVC的使用情况2. 经典情况相关的组件3. 执行3.1. 先看DispatcherServlet的总体过程3.2. 再看RequestMappingHandlerAdapter的总体过程3.2.1. RequestParamMethodArgumentResolver3.2.2. 反射调用 Controller 的方法3.2.3. RequestResponseBodyMethodProces…

Matlab参数估计与假设检验(举例解释)

参数估计分为点估计和区间估计,在matlab中可以调用namefit()函数来计算参数的极大似然估计值和置信区间。而数据分析中用得最多的是正态分布参数估计。 例1 从某厂生产的滚珠中抽取10个,测得滚珠的直径(单位:mm)为x[…

Git入门详解

Git入门详解 本文承接上文 Git入门简介 并做了内容扩充。本文讲述Git工具的安装、配置及使用友情参考链接:https://gitee.com/all-about-git 1. Git安装 安装官网:https://git-scm.com/安装过程如下: 双击.exe默认安装即可 2. Git配置 …

云安全之下一代防火墙介绍

防火墙的概念 下一代防火墙(Next Generation Firewall,NGFW)是一种可以全面应对应用层威胁的高性能防火墙。通过深入洞察网络流量中的用户、应用和内容,并借助全新的高性能单路径异构并行处理引擎,NGFW能够为用户提供…

吴恩达《微调大型语言模型》笔记

微调(fine-tuning)就是利用特有数据和技巧将通用模型转换为能执行具体任务的一种方式。例如,将 GPT-3 这种通用模型转换为诸如 ChatGPT 这样的专门用于聊天的模型。或者将 GPT-4 转换为诸如 GitHub Coplot 这样的专门用于写代码的模型。 这里…

掌握核心技巧就能创建完美的目录!如何在Word中自动创建目录

目录是Word布局的一个重要因素,尤其是在编写较长的文档时。那么,你如何在你的作品中添加目录呢?在这篇文章中,我将分享一些基于Word2016自动创建目录的经验。希望它能或多或少地帮到你。 自动创建目录 1、输入目录文本的名称&am…

【Redis】Redis中的数据结构和内部编码

Redis中的数据结构和内部编码 type命令实际返回的就是当前键的数据结构类型,它们分别是:string(字符串)、list(列表)、hash(哈希)、set(集合)、zset&#xf…

C/C++学习 -- RSA算法

概述 RSA算法是一种广泛应用于数据加密与解密的非对称加密算法。它由三位数学家(Rivest、Shamir和Adleman)在1977年提出,因此得名。RSA算法的核心原理是基于大素数的数学问题的难解性,利用两个密钥来完成加密和解密操作。 特点 …

第二证券:华为全液冷超充上线,高压快充概念爆发,双杰电气等涨停

受华为全液冷超充上线消息提振,高压快充概念9日盘中强势拉升,到发稿,双杰电气、永贵电器“20cm”涨停,英可瑞、易事特涨超13%,伊戈尔、协鑫能科、宝馨科技、日丰股份等涨停,万祥科技、星云股份涨近8%。 消…

禁用Chrome自动更新

chrome浏览器会强制用户自动更新,每次点击关于google时,会自动检测更新并下载,非常不好 1. 进入%userprofile%\AppData\Local\Google文件夹 2. 找到其中的Update文件夹,右键属性-安全,将所有组/用户的权限设置为拒绝…

计算机视觉简介(1)

任何计算机视觉处理流程都始于成像系统,它从景物中捕获反射出来的光线,并将光信号转换成计算机可以读取和处理的图像格式 在计算机成像技术发展的早期,图像通过把胶卷或印刷图像素 化后获得;而现在图 像通常直接由数码相机获取&a…

ubuntu编译安装并测试opencv

下载opencv工程 git clone https://github.com/opencv/opencv.git git -C opencv checkout 4.x构建并编译opencv 在build目录下使用cmake构建生成makefile cd opencv mkdir -p build && cd build cmake -D CMAKE_BUILD_TYPERelease -D OPENCV_GENERATE_PKGCONFIGON …

elementplus下载表格为excel格式

安装xlsx npm i --save https://cdn.sheetjs.com/xlsx-0.20.0/xlsx-0.20.0.tgz引入xlsx并使用 import XLSX from xlsx;const tableRef ref<any>(null); // 导出为 Excel const exportToExcel () > {// 获取 el-table 的引用tableRef.value tableRef.value || doc…