SpringBoot Actuator未授權訪問漏洞的解決方法

在這里插入圖片描述

1. 介紹

Spring Boot Actuator 是一個用于監控和管理 Spring Boot 應用程序的功能模塊。它提供了一系列生產就緒的功能,幫助你了解應用程序的運行狀況,以及在運行時對應用程序進行調整。Actuator 使用了 Spring MVC 來暴露各種 HTTP 或 JMX 端點,通過這些端點你可以獲取到應用程序的運行信息,如健康狀態、指標、線程 dump、環境變量等。
Spring Boot Actuator 的主要特性包括:

  1. 健康檢查:可以檢查應用程序的運行狀況,包括數據庫連接、磁盤空間、服務狀態等。
  2. 指標收集:收集應用程序的性能指標,如內存使用情況、處理器使用情況、HTTP 請求計數等。
  3. HTTP 端點:暴露了一系列的 HTTP 端點,通過這些端點可以訪問應用程序的運行信息。
  4. 日志管理:可以動態地修改應用程序的日志級別。
  5. 跟蹤和應用信息:提供了對應用程序的跟蹤信息和應用信息的訪問。
  6. 線程轉儲:可以獲取應用程序的線程轉儲信息,幫助診斷性能問題。
  7. 環境信息:可以查看應用程序的配置屬性和環境變量。
  8. 映射信息:可以查看 Spring MVC 的映射信息。
  9. 審計事件:可以訪問應用程序的審計事件信息。
    要啟用 Spring Boot Actuator,你需要在項目中包含相應的依賴,然后在配置文件中配置相關的屬性。Spring Boot 2.x 版本中,Actuator 的默認端點是通過 HTTP 公開的,但是出于安全考慮,除了 /health/info 端點之外,其他端點默認是不對外暴露的。你可以通過配置文件來開啟這些端點,并設置是否需要認證訪問。
    Spring Boot Actuator 是開發和管理生產級 Spring Boot 應用程序的重要工具,它可以幫助你確保應用程序的穩定性和性能。

2. 問題描述

<!-- SpringBoot Actuator -->
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

當我們的項目只是引入了 actuator 模塊時,默認只公開了幾個接口,如:
訪問http://localhost:9200/actuator
在這里插入圖片描述
有些情況下,我們需要將服務的健康信息上報給安全監控服務,則需要將接口打開

# 暴露監控端點
management:endpoints:web:exposure:include: '*'

此時,再次訪問http://localhost:9200/actuator
在這里插入圖片描述
也可以訪問具體的屬性http://localhost:9200/actuator/env
在這里插入圖片描述
我們發現這個時候就會暴露很多服務信息,安全性得不到保證。

3. 解決方案

3.1 springboot1.x

3.1.1 禁用所有端口
#關閉全部接口
endpoints.enabled = false###只開啟某些接口
#endpoints.beans.enabled = true
#endpoints.env.enabled = true
#endpoints.trace.enabled = true
#endpoints.metrics.enabled = true
3.1.2 安全框架控制

引入依賴

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

配置輸入賬號密碼驗證后才允許訪問

management.security.enabled=true
security.user.name=admin
security.user.password=admin

3.2 springboot2.x

3.2.1 禁用所有端口
management.endpoints.enabled-by-default: false
3.2.2 安全框架控制

引入依賴

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

配置輸入賬號密碼驗證后才允許訪問

spring.security.user.name=actuator
spring.security.user.password=actuator

添加配置類

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
/*** Actuator 監控端點權限**/
@Configuration
public class ActuatorSecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {http.httpBasic().and().authorizeRequests().antMatchers("/actuator/**").authenticated().anyRequest().permitAll();http
// 關閉csrf token認證不需要csrf防護.csrf().disable()
// 關閉Session會話管理器 JWT 不需要.sessionManagement().disable()
// 關閉記住我功能 JWT 不需要.rememberMe().disable();}
}

4. 參考資料

https://zhuanlan.zhihu.com/p/602691208
https://springdoc.cn/spring-boot-actuator-enable-endpoints/
https://blog.csdn.net/weixin_44106034/article/details/133934404
https://developer.aliyun.com/article/1079170

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/10237.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/10237.shtml
英文地址,請注明出處:http://en.pswp.cn/web/10237.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【機器學習】卷積神經(CNN)在圖像識別中的革命性應用:自動駕駛的崛起

卷積神經網絡&#xff08;CNN&#xff09;在圖像識別中的革命性應用&#xff1a;自動駕駛的崛起 一、卷積神經網絡&#xff08;CNN&#xff09;的基本原理二、CNN在圖像識別中的顯著成果三、CNN在自動駕駛汽車中的物體檢測和識別四、CNN在圖像識別中的代碼實例 隨著人工智能和深…

輪式機器人簡介

迄今為止,輪子一般是移動機器人學和人造交通車輛中最流行的運動機構。它可達到很高的效率, 如圖所示, 而且用比較簡單的機械就可實現它的制作。 另外,在輪式機器人設計中,平衡通常不是一個研究問題。 因為在所有時間里,輪式機器人一般都被設計成在任何時間里所有輪子均與地接…

大模型系列之解讀MoE

Mixtral 8x7B 的推出&#xff0c; 使我們開始更多地關注 基于MoE 的大模型架構&#xff0c; 那么&#xff0c;什么是MoE呢&#xff1f; 1. MoE溯源 MoE的概念起源于 1991 年的論文 Adaptive Mixture of Local Experts&#xff08;https://www.cs.toronto.edu/~hinton/absps/jjn…

間隔采樣視頻的代碼

項目統計模型準確率 項目會保存大量視頻&#xff0c;為了統計模型的精度&#xff0c;我們想要十五分鐘抽取一個視頻用來統計。 import os import shutil from datetime import datetime, timedelta #抽取視頻的代碼&#xff0c;會在每個小時的0分、15分、30分、45分取一個命名…

c++ 和c回調混合的一種實現

代碼 #include <iostream> #include <list>using namespace std; struct CallbackBase { virtual void operator()(const char* msg,int len) 0; };void messagesCB(const char* msg,int len) {std::cout<<msg<<" "<<len<<std…

中國土壤類型空間分布數據

中國土壤類型空間分布數據根據全國土壤普查辦公室1995年編制并出版的《1&#xff1a;100萬中華人民共和國土壤圖》數字化生成&#xff0c; 采用了傳統的“土壤發生分類”系統&#xff0c;基本制圖單元為亞類&#xff0c;共分出12土綱&#xff0c;61個土類&#xff0c;227個亞類…

JavaScript原理篇——Promise原理及筆試題實戰演練

Promise 是 JavaScript 中用于處理異步操作的對象&#xff0c;它代表了一個可能還沒有完成的操作的最終完成或失敗&#xff0c;以及其結果值。Promise 對象有三種狀態&#xff1a; Pending&#xff08;進行中&#xff09;&#xff1a;初始狀態&#xff0c;既不是成功&#xff0…

JavaScript BOM - 瀏覽器對象模型

BOM&#xff08;瀏覽器對象模型&#xff09;是JavaScript中與瀏覽器交互的一組API&#xff0c;它提供了一種方法來操作瀏覽器窗口和文檔。BOM由一組對象組成&#xff0c;這些對象允許您訪問瀏覽器本身的功能&#xff0c;而不僅僅是網頁內容。 BOM對象包括&#xff1a; window對…

融知財經:期貨和現貨的區別是什么?哪個風險大?

期貨和現貨在交易對象等方面存在明顯的區別。期貨交易是一種衍生金融工具&#xff0c;主要用于價格發現、風險管理和投機&#xff0c;而現貨交易則是商品和服務的實際買賣。在選擇進行期貨交易還是現貨交易時&#xff0c;投資者需要根據自己的需求和市場情況來決定。 期貨和現貨…

二叉搜索樹 題解 二叉搜索樹的構建 DFS

二叉搜索樹 題目描述 判斷兩序列是否為同一個二叉搜索樹序列。 輸入描述 第一行是一個數 n ( 1 < n < 20 )&#xff0c;表示有 n 個二叉搜索樹序列需要判斷。 接下去一行是一個序列&#xff0c;序列長度小于 10 &#xff0c;包含 0 ~ 9 的數字&#xff0c;沒有重復數…

【Android】Kotlin學習之Lambda表達式

java和kotlin對比 Lambda語法 Lambda隱形參數 it 也可以不使用指定的名稱it, 可以 自定義 Lambda 使用下劃線

原來Python處理word這么簡單:關于python操作文檔的問題

關于python操作文檔的問題 文檔類型&#xff1a;docx 語言&#xff1a;python 我想在文檔中姓名后面的下劃線之上插入一個姓名&#xff0c;并保存為新的文檔&#xff0c; 用python應該怎么實現呢 文檔見下圖 一般情況下&#xff0c;我們在看到題目的時候&#xff0c;應該先審題…

PHP+B/S架構 不良事件管理系統源碼 醫院不良事件報告系統源碼,開發技術vue2+element+laravel8

PHPB/S架構 不良事件管理系統源碼 醫院不良事件報告系統源碼&#xff0c;開發技術vue2elementlaravel8 技術架構&#xff1a;前后端分離&#xff0c;倉儲模式&#xff0c;BS架構&#xff0c; 開發技術&#xff1a;PHPvscodevue2elementlaravel8mysql5.7&#xff0c;專業團隊研…

[AutoSar]lauterbach_001_ORTI_CPUload_Trace

目錄 關鍵詞平臺說明一、ORTI概述二、ORTI文件的生成三、ORTI文件的導入四、Trace 功能4.1 Trace 功能菜單介紹4.2 Trace功能的配置4.3 Trace MCDS 設置4.4 Task Switches斷點的設置4.5 Trace 數據的錄取4.6 CPU 負載和Task調度的查看 關鍵詞 嵌入式、C語言、autosar、OS、BSW…

【高階數據結構】圖--最短路徑問題

圖--最短路徑問題 一、單源最短路徑--Dijkstra算法1、簡介2、解析3、代碼4、測試用例5、打印最小路徑代碼和測試6、缺陷&#xff1a;不能使用負路徑 二、單源最短路徑--Bellman-Ford算法1、簡介2、解析&#xff08;1&#xff09;詳情i、負權問題&#xff1a;一個點只跑一趟找最…

A股行情訂閱工具,支持股票/可轉債level2/level2數據

簡單使用 ./hqCenter -h-initCodesFile string啟動即訂閱的code (default "./data/initCodes.json")-listen stringhttp監聽地址 (default ":31800")-saveHqFile string行情寫入文件,自動加日期后綴。為空則不寫入文件。 (default "./data/hq")-…

PostGIS之pointcloud

瀚高數據庫 目錄 環境 文檔用途 詳細信息 環境 系統平臺&#xff1a;Linux x86-64 Red Hat Enterprise Linux 7 版本&#xff1a;14 文檔用途 本文詳細介紹pointcloud&#xff0c;包括&#xff1a;安裝配置、兩個核心數據類型、功能函數、使用PDAL讀寫pgpoingcloud數據等。 詳…

學習前端第三十四天(call,apply,函數綁定;箭頭函數;對象屬性配置)

一、call、apply function fn(x, y) { console.log("hello", x, y, this) }; 1.call方法 作用&#xff1a;調用后執行函數&#xff0c;可以給“this”傳參數 fn.call({ a: 1 }, 1, 2,); 2.apply方法 第一個給“this”傳參數&#xff0c;第二個參數需要是數組形式…

ElementUi中el-table組件使用row-class-name修改指定行顏色

可以通過指定 Table 組件的 row-class-name 屬性來為 Table 中的某一行添加 class&#xff0c;表明該行處于某種狀態。 注意&#xff1a;如果在el-table中使用了stripe這個屬性&#xff0c;這個屬性是帶斑馬紋的表格樣式&#xff0c;它和row-class-name共存時是沒有效果。 注…