欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

SpringBoot通過配置Swagger權(quán)限解決Swagger未授權(quán)訪問漏洞問題

 更新時間:2024年05月22日 10:15:59   作者:默 語  
這篇文章主要介紹了SpringBoot通過配置Swagger權(quán)限解決Swagger未授權(quán)訪問漏洞問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

SpringBoot配置Swagger權(quán)限解決Swagger未授權(quán)訪問漏洞

我們要談?wù)摰氖侨绾卧赟pringBoot項目中解決Swagger權(quán)限漏洞。

不要小看這個問題,它可是有潛在風(fēng)險的!讓我們一起來看看如何解決吧!

漏洞說明

Swagger是一個規(guī)范和完整的框架,用于生成、描述、調(diào)用和可視化 RESTful 風(fēng)格的 Web 服務(wù)。

其中,Swagger-UI會根據(jù)開發(fā)人員在代碼中的設(shè)置來自動生成API說明文檔。

若存在相關(guān)的配置缺陷,攻擊者可以在未授權(quán)的狀態(tài)下,翻查Swagger接口文檔,得到系統(tǒng)功能API接口的詳細(xì)參數(shù),再構(gòu)造參數(shù)發(fā)包,通過回顯獲取系統(tǒng)大量的敏感信息。

這個漏洞的嚴(yán)重性不容小覷,因為一旦被利用,可能導(dǎo)致系統(tǒng)遭受到不可挽回的損失。

漏洞解決方法

方法一:通過application.yml配置,開啟頁面訪問限制。

在SpringBoot項目中,我們可以通過簡單的配置來解決Swagger權(quán)限漏洞。

首先,我們需要在application.yml文件中添加如下配置:

swagger:
  production: false
  basic:
    enable: true
    username: swaggerAuthorizedAdminUser   #替換成生產(chǎn)環(huán)境的實際用戶名
    password: adfaeYUps&@sdf_23134         #替換成生產(chǎn)環(huán)境的實際用戶名

方法二:通過SwaggerConfig類配置,開啟可訪問環(huán)境限制

如果你更喜歡通過代碼的方式來配置Swagger權(quán)限,可以使用SwaggerConfig類。

下面是一個簡單的示例:

@Configuration
@EnableSwagger2
@Profile({"dev"})
public class SwaggerConfig implements WebMvcConfigurer {
	# 此處省略不涉及漏洞修復(fù)的代碼
}

漏洞預(yù)防

要想有效預(yù)防Swagger權(quán)限漏洞,我們需要排查接口是否存在賬號和密碼等敏感信息泄露。

這個過程可能需要一些技術(shù)手段,你可以參考一些相關(guān)文章進(jìn)行排查。記住,安全第一!

心得:

通過配置和代碼示例,我們可以有效地保護(hù)我們的系統(tǒng)免受潛在的安全威脅。

SpringBoot輕松配置Swagger

針對springboot項目輕松引入swagger做一個示例。

Swagger是什么?

Swagger 是一個用于生成、描述和調(diào)用 RESTful 接口的 Web 服務(wù)。

通俗的來講,Swagger 就是將項目中所有(想要暴露的)接口展現(xiàn)在頁面上,并且可以進(jìn)行接口調(diào)用和測試的服務(wù)。

PS:Swagger 遵循了 OpenAPI 規(guī)范,OpenAPI 是 Linux 基金會的一個項目,試圖通過定義一種用來描述 API 格式或 API 定義的語言,來規(guī)范 RESTful 服務(wù)開發(fā)過程。

Swagger 官網(wǎng)地址:https://swagger.io/Swagger 有什么用?

從上述 Swagger 定義我們不難看出 Swagger 有以下 3 個重要的作用:將項目中所有的接口展現(xiàn)在頁面上,這樣后端程序員就不需要專門為前端使用者編寫專門的接口文檔;

當(dāng)接口更新之后,只需要修改代碼中的 Swagger 描述就可以實時生成新的接口文檔了,從而規(guī)避了接口文檔老舊不能使用的問題;

通過 Swagger 頁面,我們可以直接進(jìn)行接口調(diào)用,降低了項目開發(fā)階段的調(diào)試成本。

使用步驟

1.pom導(dǎo)入swagger包以及knief

代碼如下(示例):

    <properties>
        <swagger.version>2.9.2</swagger.version>
        <knife4j.version>2.0.2</knife4j.version>
    </properties>
<!-- 在dependencies標(biāo)簽下添加如下, knife,是 swagger 的增強版,同一個作者開發(fā)。該UI增強包主要包括兩大核心功能:文檔說明 和 在線調(diào)試  -->
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger2</artifactId>
            <version>${swagger.version}</version>
        </dependency>
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger-ui</artifactId>
            <version>${swagger.version}</version>
        </dependency>

        <dependency>
            <groupId>com.github.xiaoymin</groupId>
            <artifactId>knife4j-spring-boot-starter</artifactId>
            <version>${knife4j.version}</version>
        </dependency>

2.添加swagger配置類

代碼如下(示例):

package com.dianhun.corporate.compliance.config;

import com.github.xiaoymin.knife4j.spring.annotations.EnableKnife4j;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.ParameterBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.schema.ModelRef;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.Parameter;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;

import java.util.ArrayList;
import java.util.List;


@Configuration
@EnableSwagger2
@EnableKnife4j
public class SwaggerConfig {

    @Bean
    public Docket createRestApi() {

        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo())
                .select()
                .apis(RequestHandlerSelectors.basePackage("com.dianhun.corporate.compliance"))
                .paths(PathSelectors.any())
                .build();
//                .globalOperationParameters(setHeaderToken());
    }

    private ApiInfo apiInfo() {
        return new ApiInfoBuilder()
                .description("文檔描述")
                .title("接口文檔")
                .version("1.0")
                .build();
    }

}

OK,這就能輕松使用swagger調(diào)試了。

總結(jié)

這些僅為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • HttpClient實現(xiàn)調(diào)用外部項目接口工具類的示例

    HttpClient實現(xiàn)調(diào)用外部項目接口工具類的示例

    下面小編就為大家?guī)硪黄狧ttpClient實現(xiàn)調(diào)用外部項目接口工具類的示例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-10-10
  • Spring源碼學(xué)習(xí)之動態(tài)代理實現(xiàn)流程

    Spring源碼學(xué)習(xí)之動態(tài)代理實現(xiàn)流程

    這篇文章主要給大家介紹了關(guān)于Spring源碼學(xué)習(xí)之動態(tài)代理實現(xiàn)流程的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • Springmvc nginx實現(xiàn)動靜分離過程詳解

    Springmvc nginx實現(xiàn)動靜分離過程詳解

    這篇文章主要介紹了Springmvc nginx實現(xiàn)動靜分離過程詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-09-09
  • Java實現(xiàn)解析dcm醫(yī)學(xué)影像文件并提取文件信息的方法示例

    Java實現(xiàn)解析dcm醫(yī)學(xué)影像文件并提取文件信息的方法示例

    這篇文章主要介紹了Java實現(xiàn)解析dcm醫(yī)學(xué)影像文件并提取文件信息的方法,結(jié)合實例形式分析了java基于第三方庫文件針對dcm醫(yī)學(xué)影像文件的解析操作相關(guān)實現(xiàn)技巧,需要的朋友可以參考下
    2018-04-04
  • Java中keytool的使用

    Java中keytool的使用

    Keytool 是一個JAVA環(huán)境下的安全鑰匙與證書的管理工具,Keytool將密鑰(key)和證書(certificates)存在一個稱為keystore 的文件(受密碼保護(hù))中,本文重點給大家介紹keytool的使用,感興趣的朋友一起看看吧
    2022-02-02
  • java 迭代器模式實例詳解

    java 迭代器模式實例詳解

    這篇文章主要介紹了java 迭代器模式實例詳解的相關(guān)資料,需要的朋友可以參考下
    2017-05-05
  • Spring Boot Admin 的使用詳解

    Spring Boot Admin 的使用詳解

    這篇文章主要介紹了Spring Boot Admin 的使用詳解,Spring Boot Admin 用于監(jiān)控基于 Spring Boot 的應(yīng)用,有興趣的可以了解一下
    2017-09-09
  • Java GZip 基于內(nèi)存實現(xiàn)壓縮和解壓的方法

    Java GZip 基于內(nèi)存實現(xiàn)壓縮和解壓的方法

    這篇文章主要介紹了Java GZip 基于內(nèi)存實現(xiàn)壓縮和解壓的方法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-08-08
  • java多線程三種上鎖方式小結(jié)

    java多線程三種上鎖方式小結(jié)

    本文主要介紹了java多線程三種上鎖方式小結(jié),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-12-12
  • Java初學(xué)者入門之繼承和多態(tài)

    Java初學(xué)者入門之繼承和多態(tài)

    Java 面向?qū)ο缶幊逃腥筇匦裕悍庋b、繼承、多態(tài),學(xué)好繼承和多態(tài)是面向?qū)ο箝_發(fā)語言中非常重要的一個環(huán)節(jié),這篇文章主要給大家介紹了關(guān)于Java初學(xué)者入門之繼承和多態(tài)的相關(guān)資料,需要的朋友可以參考下
    2021-07-07

最新評論