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

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

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

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

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

不要小看這個(gè)問(wèn)題,它可是有潛在風(fēng)險(xiǎn)的!讓我們一起來(lái)看看如何解決吧!

漏洞說(shuō)明

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

其中,Swagger-UI會(huì)根據(jù)開(kāi)發(fā)人員在代碼中的設(shè)置來(lái)自動(dòng)生成API說(shuō)明文檔。

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

這個(gè)漏洞的嚴(yán)重性不容小覷,因?yàn)橐坏┍焕茫赡軐?dǎo)致系統(tǒng)遭受到不可挽回的損失。

漏洞解決方法

方法一:通過(guò)application.yml配置,開(kāi)啟頁(yè)面訪問(wèn)限制。

在SpringBoot項(xiàng)目中,我們可以通過(guò)簡(jiǎn)單的配置來(lái)解決Swagger權(quán)限漏洞。

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

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

方法二:通過(guò)SwaggerConfig類配置,開(kāi)啟可訪問(wèn)環(huán)境限制

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

下面是一個(gè)簡(jiǎn)單的示例:

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

漏洞預(yù)防

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

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

心得:

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

SpringBoot輕松配置Swagger

針對(duì)springboot項(xiàng)目輕松引入swagger做一個(gè)示例。

Swagger是什么?

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

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

PS:Swagger 遵循了 OpenAPI 規(guī)范,OpenAPI 是 Linux 基金會(huì)的一個(gè)項(xiàng)目,試圖通過(guò)定義一種用來(lái)描述 API 格式或 API 定義的語(yǔ)言,來(lái)規(guī)范 RESTful 服務(wù)開(kāi)發(fā)過(guò)程。

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

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

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

通過(guò) Swagger 頁(yè)面,我們可以直接進(jìn)行接口調(diào)用,降低了項(xiàng)目開(kāi)發(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 的增強(qiáng)版,同一個(gè)作者開(kāi)發(fā)。該UI增強(qiáng)包主要包括兩大核心功能:文檔說(shuō)明 和 在線調(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é)

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

相關(guān)文章

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

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

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

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

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

    Springmvc nginx實(shí)現(xiàn)動(dòng)靜分離過(guò)程詳解

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

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

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

    Java中keytool的使用

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

    java 迭代器模式實(shí)例詳解

    這篇文章主要介紹了java 迭代器模式實(shí)例詳解的相關(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)存實(shí)現(xiàn)壓縮和解壓的方法

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

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

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

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

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

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

最新評(píng)論