Spring spring

Spring中文网站 > Spring Boot > Spring属性注入的方式有哪些 Spring Boot常见漏洞有哪些
Spring属性注入的方式有哪些 Spring Boot常见漏洞有哪些
发布时间:2026/05/07 09:34:58

品牌型号:联想ThinkPad X1

系统:Windows10家庭版

软件版本:Spring 5.3.7

我们Java程序员在做项目的时候,Spring和Spring Boot是经常要用到的技术,相对于曾经的传统Web项目,Spring和Spring Boot大幅提升了开发效率,但是很多开发者在实际使用的时候,都只关心功能怎么实现,忽视了一些基础细节和安全隐患,就好比我们在做Spring的属性注入的时候,作为Bean管理的核心操作,不同的注入方式分别对应着不同的使用场景,有些人只会其中一种方式,如果遇到复杂场景,这种错误的使用容易出错。而且,Spring Boot虽然简化了Spring项目中的很多配置,但是也隐藏着一些常见的漏洞,如果不加以重视可能会给项目带来安全风险。下面给大家介绍一下Spring属性注入的方式有哪些,Spring Boot常见漏洞有哪些的相关内容。

一、Spring属性注入的方式有哪些

Spring框架是我们后端必须要学会并掌握的技术框架,Spring的核心思想是IOC控制反转,把创建Bean的权力交给了Spring容器,那么有没有想过,我们怎么将属性注入呢?回忆下,我们之前在传统项目的时候,是通过硬编码new的方式去给属性赋值,这违背了我们IOC的思想。

图1:通过new硬编码方式完成属性赋值

Spring是可以依赖注入的,我们用的比较多的是通过setter方法实现注入,我们给成员属性取消赋值,然后给这个成员属性提供一个公开的不带返回值的set方法,然后在XML中通过property属性注入。

setter方法注入
图2:setter方法注入

也可以使用构造器完成注入,在属性所属类的构造器中给这个属性注入,在配置文件中,我们使用constructor-arg属性进行注入。

构造器注入
图3:构造器注入

二、Spring Boot常见漏洞有哪些

Spring Boot以约定大于配置的思想简化了我们之前Spring开发的流程,比较灵活,但是也存在一些安全漏洞,例如Actuator未授权访问,要知道Actuator是Spring Boot的监控组件,提供了/actuator/env、/beans、/shutdown等敏感断点,如果配置不当的话,可能会导致泄露数据库密码、jvm参数等信息,甚至对方可以远程关闭应用,所以生产环境一定不要暴露Actuator到公网上,我们在配置文件中,可以按照下面图中的方式做一些防护。

防护措施
图4:防护措施

此外就是一些常见的各类漏洞,例如常见的SpEL表达式注入、SQL注入等,就拿SpEL注入来说,开发者如果把用户输入的内容直接解析为SpEL表达式的话,攻击者可以执行任意代码,危害比SQL注入要大得多。我们可以看下下面这个例子,这里用户输入内容会被直接解析为SpEL。

用户输入的内容被直接解析为SpEL表达式
图5:用户输入的内容被直接解析为SpEL表达式

攻击者可以在客户端发起下面图片中这样的请求,那么我们Spring执行后就可以读取到服务器文件了。

模拟攻击者发起攻击
图6:模拟攻击者发起攻击

此外还有些情况也会涉及到敏感信息泄露,例如配置文件硬编码,我们很多程序员会把数据库密码、API Key或者是密钥之类的直接写到配置文件中,这也是不安全的。类似的漏洞还有不少。

以上就是Spring属性注入的方式有哪些,Spring Boot常见漏洞有哪些的全部内容了。Spring是我们后端经常打交道的后端框架,主要思想是IOC控制反转和依赖注入DI,我们可以使用构造器完成依赖注入,这也是Spring比较推荐的一种方式,我们还可以通过setter方法去完成依赖注入。Spring Boot跟Spring一样,是现在企业级开发的主流技术,但是也存在一些常见的漏洞,主要就是Actuator 未授权访问、注入攻击、敏感信息泄露、依赖漏洞等,建议大家在开发的时候要多加注意。

180 1563 6924