三方检测-java服务端对swagger的屏蔽方案

天行健,君子以自强不息;地势坤,君子以厚德载物

文章目录

  • 背景
    • 无法达到目的的方案
      • 方案1
      • 方案2
      • 方案3
    • 检验方式
  • 解决方案
    • 增加knife4j增强方案
      • pom引入依赖
        • swagger2
        • swagger3
      • swagger配置类
      • yml中增加
      • 效果
      • 题外话

背景

近期,在系统进行三方检测时,会进行web扫描检测安全性。被检测到swagger-ui的不安全。根据调研,经验发现,即使按照以下方案处理,三方检测还是能检测到。

无法达到目的的方案

方案1

在swagger的配置文件中加上

new Docket().enable(false)

方案2

在swagger增加上Authorize也不行,还是能扫出来

方案3

删除swagger!!!!那工作量就大了去了,不嫌麻烦的可以试试。强烈不建议使用此方法。

检验方式

根据三方检测提供的资料,从蛛丝马迹中可以发现,使用如下命令,在浏览器中访问到参数,三方检测就会认为不安全。

# swagger2
view-source:http://localhost:8080/swagger-ui.html
# swagger3
view-source:http://localhost:8080/swagger-ui/index.html

三方检测-java服务端对swagger的屏蔽方案_第1张图片

解决方案

增加knife4j增强方案

经过调研,可引入swagger的增强包knife4j,即可进行处理。knife4j的官网,官方文档。
本方案具体修改内容如下:

pom引入依赖

swagger2

如果系统引入的是swagger2,就引入knife4j2的版本(找最新版本引入,以下版本截止2023年9月8日,如果出现不兼容,就降版本兼容)

<dependency>
    <groupId>com.github.xiaoymingroupId>
    <artifactId>knife4j-spring-boot-starterartifactId>
    <version>2.0.9version>
dependency>

如果springfox版本为2.0.9,那就用

 <dependency>
    <groupId>com.github.xiaoymingroupId>
    <artifactId>knife4j-spring-boot-starterartifactId>
    <version>2.0.5version>
dependency>

swagger3

如果系统引入的是swagger3,就引入knife4j3的版本(找最新版本引入,以下版本截止2023年9月8日)

<dependency>
    <groupId>com.github.xiaoymingroupId>
    <artifactId>knife4j-spring-boot-starterartifactId>
    <version>3.0.3version>
dependency>

swagger配置类

在swagger的配置类上,增加注解,启动knife4j增强。(如果没有配置类,那就在@EnableSwager2的注解下面加)

@EnableKnife4j

yml中增加

在系统的配置文件yml(或properties)中增加

knife4j:
  # 开启增强配置
  enable: true
  # 此处如果是true,swagger就会彻底屏蔽掉无法调用,即是输入账号密码后,也无法访问
  #production: true
  basic:
    enable: true
    # Basic认证用户名
    username: test
    # Basic认证密码
    password: 123

效果

按照上面的方式进行配置后,当访问swagger的页面,会显示

三方检测-java服务端对swagger的屏蔽方案_第2张图片

题外话

增加knife4j增强后,可访问{ip:port}/doc.html,访问到增强的swagger-ui页面,类似postman、apifox的页面,可以尝试,很好用!

你可能感兴趣的:(JAVA相关,java)