springboot的安全性

2023-10-27

如何实现 Spring Boot 应用程序的安全性?

为了实现 Spring Boot 的安全性,我们使用 spring-boot-starter-security 依赖项,并且必须添加安全配置。它只需要很少的代码。配置类将必须扩展WebSecurityConfigurerAdapter 并覆盖其方法。

比较一下 Spring Security 和 Shiro 各自的优缺点 ?

由于 Spring Boot 官方提供了大量的非常方便的开箱即用的 Starter ,包括 Spring Security 的 Starter ,使得在 Spring Boot 中使用 Spring Security 变得更加容易,甚至只需要添加一个依赖就可以保护所有的接口,所以,如果是 Spring Boot 项目,一般选择 Spring Security 。当然这只是一个建议的组合,单纯从技术上来说,无论怎么组合,都是没有问题的。Shiro 和 Spring Security 相比,主要有如下一些特点:
1. Spring Security 是一个重量级的安全管理框架;Shiro 则是一个轻量级 的安全管理框架
2. Spring Security 概念复杂,配置繁琐;Shiro 概念简单、配置简单 3. Spring Security 功能强大;Shiro 功能简单

Spring Boot 中如何解决跨域问题 ?

跨域可以在前端通过 JSONP 来解决,但是 JSONP 只可以发送 GET 请求,无法发送其他类型的请求,在 RESTful 风格的应用中,就显得非常鸡肋,因此我们推荐在后端通过 (CORS,Cross-origin resource sharing) 来解决跨域问题。这种解决方案并非 Spring Boot 特有的,在传统的 SSM 框架中,就可以通过 CORS 来解决跨域问题,只不过之前我们是在 XML 文件中配置 CORS ,现在可以通过实现WebMvcConfigurer接口然后重写addCorsMappings方法解决跨域问题。

1

2

@Configuration

public class CorsConfig implements WebMvcConfigurer {

3

4

5

6

7

8

 @Override
 public void addCorsMappings(CorsRegistry registry) { registry.addMapping("/**")

 .allowedOrigins("*")

 .allowCredentials(true)

9

10

11

 .allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS") .maxAge(3600);

 }

12

13

}

项目中前后端分离部署,所以需要解决跨域的问题。

我们使用cookie存放用户登录的信息,在spring拦截器进行权限控制,当权限不符合时,直接返回给用户固定的json结果。

当用户登录以后,正常使用;当用户退出登录状态时或者token过期时,由于拦截器和跨域的顺序有问题,出现了跨域的现象。

我们知道一个http请求,先走filter,到达servlet后才进行拦截器的处理,如果我们把cors放在filter里,就可以优先于权限拦截器执行。

1

2

@Configuration

public class CorsConfig {

3

4

5

6

7

8

9

10

11

 @Bean

 public CorsFilter corsFilter() {
 CorsConfiguration corsConfiguration = new CorsConfiguration(); corsConfiguration.addAllowedOrigin("*");

 corsConfiguration.addAllowedHeader("*");

 corsConfiguration.addAllowedMethod("*");
 corsConfiguration.setAllowCredentials(true);
 UrlBasedCorsConfigurationSource urlBasedCorsConfigurationSource = new U

rlBasedCorsConfigurationSource();

12

 urlBasedCorsConfigurationSource.registerCorsConfiguration("/**", corsCo

nfiguration);

13

14

 return new CorsFilter(urlBasedCorsConfigurationSource);

 }

15

16

}

什么是 CSRF 攻击?

CSRF 代表跨站请求伪造。这是一种攻击,迫使最终用户在当前通过身份验证的Web 应用程序上执行不需要的操作。CSRF 攻击专门针对状态改变请求,而不是数据窃取,因为攻击者无法查看对伪造请求的响应。

监视器

Spring Boot 中的监视器是什么?

Spring boot actuator 是 spring 启动框架中的重要功能之一。Spring boot 监视器可帮助您访问生产环境中正在运行的应用程序的当前状态。有几个指标必须在生产环境中进行检查和监控。即使一些外部应用程序可能正在使用这些服务来向相关人员触发警报消息。监视器模块公开了一组可直接作为 HTTP URL 访问的REST 端点来检查状态。

如何在 Spring Boot 中禁用 Actuator 端点安全性?

默认情况下,所有敏感的 HTTP 端点都是安全的,只有具有 ACTUATOR 角色的用户才能访问它们。安全性是使用标准的 HttpServletRequest.isUserInRole 方法实施的。 我们可以使用来禁用安全性。只有在执行机构端点在防火墙后访问时,才建议禁用安全性。

我们如何监视所有 Spring Boot 微服务?

Spring Boot 提供监视器端点以监控各个微服务的度量。这些端点对于获取有关应用程序的信息(如它们是否已启动)以及它们的组件(如数据库等)是否正常运行很有帮助。但是,使用监视器的一个主要缺点或困难是,我们必须单独打开应用程序的知识点以了解其状态或健康状况。想象一下涉及 50 个应用程序的微服务,管理员将不得不击中所有 50 个应用程序的执行终端。为了帮助我们处理这种情况,我们将使用位于的开源项目。 它建立在 Spring Boot Actuator 之上,它提供了一个 Web UI,使我们能够可视化多个应用程序的度量。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

springboot的安全性 的相关文章

  • AES 加密 Java/plsql

    我需要在Java和plsql DBMS CRYPTO for Oracle 10g 上实现相同的加密 解密应用程序 两种实现都工作正常 但这里的问题是我对相同纯文本的加密得到了不同的输出 下面是用于加密 解密过程的代码 Java 和 PLS
  • 线程自动利用多个CPU核心?

    假设我的应用程序运行 2 个线程 例如渲染线程和游戏更新线程 如果它在具有多核 CPU 当今典型 的移动设备上运行 我是否可以期望线程在可能的情况下自动分配给不同的核心 我知道底层操作系统内核 Android linux内核 决定调度 我的
  • manifest.mf 文件的附加内容的约定?

    Java JAR 中的 MANIFEST MF 文件是否有任何超出 MANIFEST MF 约定的约定 JAR规范 http download oracle com javase 1 4 2 docs guide jar jar html
  • JNI 不满意链接错误

    我想创建一个简单的 JNI 层 我使用Visual studio 2008创建了一个dll Win 32控制台应用程序项目类型 带有DLL作为选项 当我调用本机方法时 出现此异常 Exception occurred during even
  • ExceptionConverter:java.io.IOException:文档没有页面。我正在使用 iText

    当我执行下面的代码时 File f new File c sample pdf PdfWriter getInstance document new FileOutputStream f document open System out p
  • IntelliJ IDEA 创建的 JAR 文件无法运行

    我在 IntelliJ 中编写了一个跨越几个类的程序 当我在 IDE 中测试它时它运行良好 但是 每当我按照教程将项目制作成 jar 可执行文件时 它就不会运行 双击 out 文件夹中的文件时 该文件不会运行 并显示 无法启动 Java J
  • 在浏览器中点击应用程序时播放框架挂起

    我正在 Play 中运行一个应用程序activator run 也许 5 次中有 3 次 它会挂起 当我去http localhost 9000 它就永远坐在那里旋转 我看到很多promise timed out错误也 我应该去哪里寻找这个
  • java.io.IOException: %1 不是有效的 Win32 应用程序

    我正在尝试对 XML 文档进行数字签名 为此我有两个选择 有一个由爱沙尼亚认证中心为程序员创建的库 还有一个由银行制作的运行 Java 代码的脚本 如果使用官方 认证中心 库 那么一切都会像魅力一样进行一些调整 但是当涉及到银行脚本时 它会
  • Convert.FromBase64String 方法的 Java 等效项

    Java 中是否有相当于Convert FromBase64String http msdn microsoft com en us library system convert frombase64string aspx which 将指
  • java中删除字符串中的特殊字符?

    如何删除字符串中除 之外的特殊字符 现在我用 replaceAll w s 它删除了所有特殊字符 但我想保留 谁能告诉我我该怎么办 Use replaceAll w s 我所做的是将下划线和连字符添加到正则表达式中 我添加了一个 连字符之前
  • Prim 的迷宫生成算法:获取相邻单元格

    我基于 Prim 算法编写了一个迷宫生成器程序 该算法是 Prim 算法的随机版本 从充满墙壁的网格开始 选择一个单元格 将其标记为迷宫的一部分 将单元格的墙壁添加到墙壁列表中 While there are walls in the li
  • Spring Data 与 Spring Data JPA 与 JdbcTemplate

    我有信心Spring Data and Spring Data JPA指的是相同的 但后来我在 youtube 上观看了一个关于他正在使用JdbcTemplate在那篇教程中 所以我在那里感到困惑 我想澄清一下两者之间有什么区别Spring
  • Java直接内存:在自定义类中使用sun.misc.Cleaner

    在 Java 中 NIO 直接缓冲区分配的内存通过以下方式释放 sun misc Cleaner实例 一些比对象终结更有效的特殊幻像引用 这种清洁器机制是否仅针对直接缓冲区子类硬编码在 JVM 中 或者是否也可以在自定义组件中使用清洁器 例
  • org.jdesktop.application 包不存在

    几天以来我一直在构建一个 Java 桌面应用程序 一切都很顺利 但是今天 当我打开Netbeans并编译文件时 出现以下编译错误 Compiling 9 source files to C Documents and Settings Ad
  • 当单元格内的 JComboBox 中有 ItemEvent 时,如何获取 CellRow

    我有一个 JTable 其中有一列包含 JComboBox 我有一个附加到 JComboBox 的 ItemListener 它会根据任何更改进行操作 但是 ItemListener 没有获取更改的 ComboBox 所在行的方法 当组合框
  • 如何配置eclipse以保持这种代码格式?

    以下代码来自 playframework 2 0 的示例 Display the dashboard public static Result index return ok dashboard render Project findInv
  • android Accessibility-service 突然停止触发事件

    我有一个 AccessibilityService 工作正常 但由于开发过程中的某些原因它停止工作 我似乎找不到这个原因 请看一下我的代码并告诉我为什么它不起作用 public class MyServicee extends Access
  • com.jcraft.jsch.JSchException:身份验证失败

    当我从本地磁盘上传文件到远程服务器时 出现这样的异常 com jcraft jsch JSchException Auth fail at org apache tools ant taskdefs optional ssh Scp exe
  • JAVA - 如何从扫描仪读取文件中检测到“\n”字符

    第一次海报 我在读取文本文件的扫描仪中读取返回字符时遇到问题 正在读取的文本文件如下所示 test txt start 2 0 30 30 1 1 90 30 0 test txt end 第一行 2 表示两个点 第二行 位置索引 0 xp
  • javax.persistence.Table.indexes()[Ljavax/persistence/Index 中的 NoSuchMethodError

    我有一个 Play Framework 应用程序 并且我was使用 Hibernate 4 2 5 Final 通过 Maven 依赖项管理器检索 我决定升级到 Hibernate 4 3 0 Final 成功重新编译我的应用程序并运行它

随机推荐

  • SpringBoot整合MyBatis

    SpringBoot整合MyBatis 转载请在文章最上方加上此句话 原文地址 http www cnblogs com zhuxiaojie p 5836159 html 前言 这段时间用springboot感觉确实挺好用的 很大程度上的
  • SQL查询优化——表分区

    1 表分区 在建表的时候将表建成分区表 2 好处 a1 提高对数据检索或操作的效率 a2 不同的分区可以保存到不同的表空间 磁盘 提高数据的安全性 a3 可以将数据分到不同的分区 a4 每个分区的数据可以独立的备份和恢复 3 表分区的方法
  • 【计算机科学】【2017.12】图像分类与回归的深度神经网络模型

    本文为意大利特伦托大学 作者 Salim MALEK 的博士论文 共98页 深度学习是机器学习的一个分支 在许多研究领域和实际中都得到了广泛应用 这种持续的发展主要可以追溯到潜在处理设施的可用性和可负担性 例如 仅在十年前 这些设施还没有普
  • np.quantile()详解

    numpy quantile numpy quantile a q axis None out None overwrite input False interpolation linear keepdims False import nu
  • Linux下的虚拟化部署

    文章目录 1 kvm安装条件 2 kvm虚拟化安装 3 kvm虚拟化相关信息 4 手动安装虚拟机 5 虚拟机管理命令 6 虚拟机在linux系统中传输 7 虚拟机快照 8 脚本执行新建 快照 修复虚拟机 9 虚拟机网络配置 1 kvm安装条
  • 硬盘的几点真相

    因为想自己修下硬盘 所以先找了远古时代的笔记本硬盘拆了看看结构 结果发现几个很有意思的地方 首先就是那个 do not cover 的小孔 相信很多人都注意到了硬盘上有个很小的小孔 从外面看进去好像是个微型可调电容 周围一圈文字 do no
  • Matlab 随机森林工具箱的配置使用

    总结一下Matlab随机森林工具箱的配置和使用 配置环境Matlab2019a windows10 vs2017 1 下载Matlab随机森林工具箱 下载地址http www buaapress com cn mzs file detail
  • java持久层框架数据源加密

    学习目标 java持久层框架数据源加密 文章目录 学习目标 1 mybatis框架数据源加密 https www cnblogs com melovemingming p 10699613 html 这里是引用https www cnblo
  • 基于HAL库的stm32的OLED显示屏显示(模拟I2C,四脚,0.96寸)

    参考视频 江科大oled程序移植stm32hal库 freertos学习 cpu使用率 哔哩哔哩 bilibili STM32入门教程 2023持续更新中 哔哩哔哩 bilibili 第一步 STM32CubeMX配置 一 时钟树配置 高速
  • vs2012配置python_Visual Studio 2012 Ultimate 上安装 Python 开发插件 PTVS

    1 我的环境 操作系统 32位 Win7 旗舰版 Service Pack 1 VS版本 Microsoft Visual Studio Ultimate 2012 版本 11 0 50727 1 RTMREL Python解释器版本 Py
  • CAD颗粒密堆积2D插件 球体重力堆积 离散元建模 分子热运动

    插件简介 CAD颗粒密堆积2D插件可用于生成二维状态下重力堆积的随机颗粒 插件可指定投放区域 颗粒的粒径范围 颗粒间的间距 颗粒个数等信息 同时可模拟颗粒弹性及摩擦摩擦系数 插件采用物理引擎对颗粒行为进行模拟 可实现颗粒在力场作用下的堆积
  • c语言小游戏 精简_C语言实现消消乐小游戏

    本文实例为大家分享了C语言实现消消乐小游戏的具体代码 供大家参考 具体内容如下 代码 include include include include include include include include using namespa
  • 线性代数-坐标系变换

    问题描述 已知一个全局坐标系 还有若干局部坐标系 如何将局部坐标系的坐标转成全局坐标系的坐标 反过来又如何进行 这里的坐标系都是直角坐标系 本文通过下面几个方面的研究来回答上面的问题 1 简单示例 2 求解过程 3 nodejs编程验证 简
  • 【数据结构与算法】数据结构知识点总结

    文章目录 前言 一 数组 一 知识点 二 常用操作代码示例 1 声明数组 2 初始化数组 3 访问数组元素 4 修改数组元素 5 遍历数组 6 数组作为函数参数 二 链表 一 知识点 二 常用操作代码示例 1 定义链表节点结构体 2 创建链
  • 从零开始到设计Python+Selenium自动化测试框架-如何开始

    如何开始学习web ui自动化测试 如何选择一门脚本语言 选择什么自动化测试工具 本人已经做测试快5年 很惭愧 感觉积累不够 很多测试都不会 三年多功能测试 最近两年才开始接触和学习自动化测试 打算写一个系列文章 关于如何从零开始到会设计和
  • 服务器修改编码格式,设置服务器编码格式

    设置服务器编码格式 内容精选 换一换 在异构计算架构中 昇腾AI处理器与CPU通过PCIe总线连接在一起来协同工作 Host CPU所在位置称为主机端 Host 是指与昇腾AI处理器所在硬件设备相连接的X86服务器 ARM服务器或者Wind
  • java基础之集合

    集合 基础里的重头戏来喽 一 集合概述 集合和数组的区别 概述 集合是java中用来存放多个 引用数据类型 数据的容器 它是解决了数组的一些弊端的一个多数据容器 他有 的操作集合的方法 比如增加和删除方法 java中集合的体系使用接口和类进
  • RAC重建OCR/Voting disk遇到的一些故障

    author skate time 2010 05 09 我的测试环境 母系统 win2003虚拟软件 vmware3 2 1guest系统 centos4 7oracle db oracle10 2 1 以下是我在重建rac的ocr vo
  • 全球分布式云大会:AntDB超融合流式实时数仓,打造分布式数据库新纪元

    日前 全球分布式云大会北京站在北京金茂万丽酒店举办 亚信科技AntDB数据库受邀参会 会上技术负责人北陌发表以 AntDB超融合流式实时数仓 打造分布式数据库新纪元 为主题的演讲 通过分享AntDB在数据库前沿技术的研发实践 与参会嘉宾一起
  • springboot的安全性

    如何实现 Spring Boot 应用程序的安全性 为了实现 Spring Boot 的安全性 我们使用 spring boot starter security 依赖项 并且必须添加安全配置 它只需要很少的代码 配置类将必须扩展WebSe