Nacos安全性探究

Nacos怎么做安全校验的?

以下使用nacos2.x

如上图所示, 可以直接访问Nacos的接口来获取用户列表。这说明Nacos的接口被爆露,任何情况下都可以访问,因此安全性得不到保障。

Nacos 使用 spring security 作为安全框架。spring security 使用:

在我们的 spring boot项目的 pom文件中引入:

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-security</artifactId>
            <version>2.2.0.RELEASE</version>
        </dependency>

启动项目后,访问接口时,必需登录才可以。 否则会弹出内置的登录界面:

记住这个界面,这是 spring security 默认的 内置登录界面。

也可以 添加配置:

@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {

	// @formatter:off
	@Override
	protected void configure(HttpSecurity http) throws Exception {
		http
				.authorizeRequests(authorizeRequests ->
					authorizeRequests
						.antMatchers("/css/**", "/index").permitAll()
						.antMatchers("/**").hasRole("USER")
				)
				.formLogin(formLogin ->
					formLogin
       					.loginPage("/login")
						.failureUrl("/login-error")
				);
	}
	// @formatter:on

	@Bean
	public UserDetailsService userDetailsService() {
		UserDetails userDetails = User.withDefaultPasswordEncoder()
				.username("user")
				.password("password")
				.roles("USER")
				.build();
		return new InMemoryUserDetailsManager(userDetails);
	}
}

结论: 只要 我们的 项目中引入了 spring security 的start依赖,那么 接口 都是 安全的,除非 指定哪些接口不受限。

问题:为什么 Nacos 使用了spring security,却像是没有引入 spring security一样,接口可以随意被访问呢?

 

Nacos的spring security的配置中,如果 

nacos.core.auth.system.type

为空时,会使用 我们配置的  

nacos.security.ignore.urls

属性配置文件中: 

Nacos的 属性配置文件中已经明确写了,当前只支持 nacos 和 ldap两种,所以,Nacos 的 spring security 的配置中,会忽略掉所有的请求。这就说明,spring security 不会对任何请求做安全校验了

Nacos在启动的时候,会注册一个 自定义的 filter 来进行登录校验。

 

 Nacos提供的 filter 逻辑中,判断了 是否开启权限校验,如果没开启,则不校验。 而权限校验开关默认是关闭的。

 

因此,默认情况下不会对接口做安全校验。 这也就是 为什么 使用了spring security,却像没有使用spring security似的 没对接口做安全校验的原因。

对于有些接口,如/login等,接口逻辑中 增加了 登录校验功能,因此,即使 spring security 将请求放过,接口内部逻辑也能够完成安全校验逻辑。这就是为什么有些接口必须登录,有些接口可以随意访问。

总结:

1. 使用 spring security 可以做安全校验

2. 使用spring security 可以对指定接口进行直接放行

3. 可能spring security的安全校验不符合要求,就自己定义了安全校验功能,将spring security配置成对所有接口放行。那么 此时 安全校验功能 就需要 自己来完成。

4. 有些接口 完全依赖 安全框架的权限校验逻辑,自己不做校验。

5. 也可以在接口中 增加校验逻辑。即使 请求到了接口,那么 接口内部也可以做一些权限校验,而不用依赖安全框架

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Mybatis】1—前言日志框架

⭐⭐⭐⭐⭐⭐ Github主页&#x1f449;https://github.com/A-BigTree 笔记链接&#x1f449;https://github.com/A-BigTree/Code_Learning ⭐⭐⭐⭐⭐⭐ 如果可以&#xff0c;麻烦各位看官顺手点个star~&#x1f60a; 如果文章对你有所帮助&#xff0c;可以点赞&#x1f44d;…

RBF-UKF径向基神经网络结合无迹卡尔曼滤波估计锂离子电池SOC(附MATLAB代码)

目录 RBFNN训练结果 UKF估计SOC 文章的结尾红色部分有彩蛋 RBFNN训练结果 这篇文章主要介绍如何使用RBF神经网络训练出的参数并结合UKF算法完成锂离子电池SOC的估计&#xff0c;有关RBF参数训练过程的代码分析放在2天后的下一篇文章&#xff0c;这里只给出训练完成后的结果…

关于async/await、promise和setTimeout执行顺序

关于async/await、promise和setTimeout执行顺序 async function async1() {console.log(async1 start);await async2();console.log(asnyc1 end); } async function async2() {console.log(async2); } console.log(script start); setTimeout(() > {console.log(setTimeOut…

springboot(01)项目搭建与启动

01&#xff0c;项目搭建与启动 一&#xff0c;项目搭建 有多种方式可以搭建Spring Boot项目&#xff0c;包括&#xff1a; 使用Spring Boot CLI命令行工具使用Spring Initializr网站或IDE插件生成项目模板使用Maven或Gradle手动配置项目 每种方式都有其优缺点&#xff0c;具…

Android IPC Binder机制学习(一)

一、多进程系统设计及意义Android系统分为5层&#xff0c;不过Android一般岗位只关注上三层就够用了即&#xff1a;应用层、framework层、native层。Android中的应用层和系统服务层不在同一个进程&#xff0c;系统服务在单独的进程中。Android中不同的应用属于不同的进程中Andr…

ChatGPT遭禁用、抵制后又停止Plus付费发生了?

ChatGPT相关信息 2023年2月27日消息&#xff0c;Snapchat 正在推出一个基于 OpenAI 的 ChatGPT 最新版本的聊天机器人。 这款名为“My AI”的机器人将被固定在应用界面的聊天选项卡上&#xff0c;虽然最初仅适用于每月3.99美元的SnapchatPlus付费订阅用户&#xff0c;但最终目…

图像分类综述

一、图像分类介绍 什么是图像分类&#xff0c;核心是从给定的分类集合中给图像分配一个标签的任务。实际上&#xff0c;这意味着我们的任务是分析一个输入图像并返回一个将图像分类的标签。标签来自预定义的可能类别集。 示例&#xff1a;我们假定一个可能的类别集categories …

Vue3+vite2 博客前端开发

Vue3vite2 博客前端开发 文章目录Vue3vite2 博客前端开发前言页面展示代码设计卡片设计背景&#xff08;Particles.js粒子效果&#xff09;右侧个人信息与公告内容页友链总结前言 大家是否也想拥有一个属于自己的博客&#xff1f;但是如何去开发博客&#xff0c;怎样去开发一个…

毫升 | 主成分分析(PCA)

这种方法是由Karl Pearson 介绍的。它的工作条件是&#xff0c;当高维空间中的数据映射到低维空间中的数据时&#xff0c;低维空间中数据的方差应最大。 主成分分析 (PCA) 是一种用于降低大型数据集维数的统计技术。它是机器学习、数据科学和其他处理大型数据集的领域中常用的…

如何通过C++ 将数据写入 Excel 工作表

直观的界面、出色的计算功能和图表工具&#xff0c;使Excel成为了最流行的个人计算机数据处理软件。在独立的数据包含的信息量太少&#xff0c;而过多的数据又难以理清头绪时&#xff0c;制作成表格是数据管理的最有效手段之一。这样不仅可以方便整理数据&#xff0c;还可以方便…

aspnet030高校学生团体管理系统sqlserver

net030高校学生团体管理系统 . 1.用户基本信息管理模块&#xff1a;录入、修改、删除、查询、统计、打印等功能 2.学生成绩管理模块&#xff1a;录入、修改、删除、查询、统计、打印等功能 3.学生团体信息管理模块&#xff1a;录入、修改、删除、查询、统计、打印等功能 4.教…

Excel技能之查找筛选排序,同事竖起大拇指

每天面对大量的数据&#xff0c;眼睛都看花了。头疼、脱发、颈椎病、胸闷、腰间盘突出&#xff0c;一系列并发症严重影响打工人的心情。同事看在眼里&#xff0c;痛在心里。 救救打工人吧&#xff01;打工人的福音来了&#xff0c;自从学会了查找筛选排序&#xff0c;手脚利索…

动态规划(一) part1

T1:一个数组 中的最长 升序 子序列 的长度 给你一个整数数组 nums &#xff0c;找到其中最长严格递增子序列的长度。 子序列 是由数组派生而来的序列&#xff0c;删除&#xff08;或不删除&#xff09;数组中的元素而不改变其余元素的顺序。例如&#xff0c;[3,6,2,7] 是数组…

C 非线性结构——树 万字详解(通俗易懂)

目录 一、树的介绍 1.定义 : 2.相关概念 : 3.简单分类 : 4.相关应用 : 二、树的存储 1.二叉树的存储 : 1 二叉树连续存储 2 二叉树链式存储&#xff08;常用&#xff09; 2.普通树和森林的存储 : 1 普通树的存储 2 森林的存储 三、树的遍历 1.二叉树先序遍历 : 2.二叉…

深度学习训练营之yolov5训练自己的数据集

深度学习训练营之训练自己的数据集原文链接环境介绍准备好数据集划分数据集运行voc_train.py遇到问题完整代码创建new_data.yaml文件模型训练时遇到的报错模型训练结果可视化参考链接原文链接 &#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f…

正则表达式

一、正则表达式的概述 1、概念 正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本。 正则表达式是对字符串&#xff08;包括普通字符&#xff08;例如&#xff0c;a 到 z 之间的字母&#xff09;和特殊字符&#xff08;称为“元字符”&#xff09;&#xff09;操…

JVM 程序计数器(PC)

PC寄存器的概念 JVM中的程序计数寄存器&#xff08;Program Counter Register&#xff09;中&#xff0c;Register的命名源于CPU的寄存器&#xff0c;寄存器存储指令相关的现场信息。CPU只有把数据装载到寄存器才能够运行。这里&#xff0c;并非是广义上所指的物理寄存器&#…

【蓝桥杯冲刺】日期类专题特训

目录 1. 日期累加 题目描述 输入 输出 代码 2. 日期差值 题目描述 输入 输出 代码 3. 打印日期 题目描述 输入 输出 代码 写在最后&#xff1a; 1. 日期累加 题目链接&#xff1a;日期累加 题目描述 输入 1 2008 2 3 100 输出 2008-05-13 代码 #include…

如何在 Linux 中查找所有符号链接,这几个命令得会!

在Linux中&#xff0c;符号链接&#xff08;Symbolic Link&#xff09;是一种非常常见的文件类型&#xff0c;也称为软链接。符号链接是指向另一个文件的指针&#xff0c;而不是实际的数据。它允许用户创建一个指向另一个文件的虚拟文件&#xff0c;这样用户可以在不改变实际文…

JVM解析原理

目录1.JVM内存结构2.JIT及时编译器的原理&#xff0c;优化以及切换编译器类型2.1解释型语言和编译语言2.2JIT即时编译器&#xff08;Just In Time Compiler&#xff09;3.类的加载机制和类的加载器3.1类的加载机制3.2类的加载器4.双亲委派机制4.1定义4.2优点4.3总结5.虚拟机栈详…