环境
:Spring Boot 2.7.18 Spring Boot Actuator 模块提供了 Spring Boot 生产就绪的紧急所有功能 。Actuator提供的安全所有接口可让你监控应用程序各种信息并与之交互。Spring Boot 包含许多内置接口
,漏洞你还可以添加自定义的紧急接口。例如,安全health 接口提供基本的漏洞应用程序健康信息
。有关Actuator的紧急更多介绍可以查看官方文档
,本篇文章主要讲解关于在生产环境中对Actuator的安全使用或控制不当,可能会引发安全隐患
。漏洞为了避免这些问题,紧急我们需要谨慎配置和使用Actuator
。建站模板安全 2. 安全漏洞 当在项目中启用Actuator后,漏洞默认情况下我们是紧急可以没有限制的访问任意一个接口的,如下配置: 以上配置,安全暴露了默认Actuator的漏洞所有接口 。而这些接口中有些接口暴露的信息就非常的敏感,如 :/env,/configprops,/threaddump等接口,这些接口直接会将所有信息展现出来。 上面这些接口任其随意访问是云计算有很大风险的(安全部门只要扫到你网站有这些问题都会通知你处理)尤其是上面的/configprops接口
,很可能无意间就暴露了你的隐私信息
。 针对/configprops接口在上面的图中你会发现对于password这样的key系统默认会进行脱敏处理,在默认情况下springboot会对如下的key进行处理
:以 "password" 、"secret"
、"key"、"token"
、"vcap_services"、"sun.java.command "结尾的高防服务器key都会被完全清除。 注意:只要是以这些key结尾的都会处理 自定义的属性配置bean是否会处理呢?验证如下: 查看结果: password字段被自动的脱敏处理
。但是对于这里的idNo我也希望能够脱敏处理又该如何处理呢 ?通过修改字段名以支持SpringBoot支持的默认命名规则 ,你应该不会去修改字段名称吧~
!如下修改后的效果 : 其实完全没有必要这样做,SpringBoot提供了自定义key的方式 通过上面的源码下载属性节点,可以添加你需要处理的key。 当你的key是以这种模式命名时 :.*credentials.* 包含credentials时系统也会自动的进行脱敏处理 此外,Spring Boot 还会对带有以下结尾之一的key的 URI 类值的敏感部分进行脱敏
: URI 的敏感部分使用<scheme>://<username>:<password>@<host>:<port>/格式标识。如下配置示例: 展示结果
: 自动将密码部分脱敏处理。 对于/env接口 ,也是有对应的香港云服务器配置属性进行配置 与配置属性一样通过通用的方式添加额外的key进行脱敏处理
。 注意:对于env和configprops接口都有一个相同的属性keys-to-sanitize,该属性也可以定义你需要脱敏处理的key ,该属性有相同的默认值
:password,secret,key,token,.credentials.,vcap_services,sun.java.command 如果你希望更多的控制脱敏规则
,那么你可以通过自定义SanitizingFunction Bean 。 输出结果: 对于像/threaddump,/heapdump这样的接口,我们要么将其禁用 ,服务器租用要么通过Spring Security进行安全控制 ,如下示例通过Spring Security进行安全控制。 基于用到了Security ,你完全可以对所有的接口进行拦截控制 ,也就没必要进行上面那些操作了。1. 简介
图片
图片
图片3. 解决办法
3.1 配置属性
图片
图片
图片
图片
图片
图片