• 三方检测中屏蔽swagger的方案


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

    背景

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

    无法达到目的的方案

    方案1

    在swagger的配置文件中加上

    new Docket().enable(false)
    
    • 1

    方案2

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

    方案3

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

    检验方式

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

    # swagger2
    view-source:http://localhost:8080/swagger-ui.html
    # swagger3
    view-source:http://localhost:8080/swagger-ui/index.html
    
    • 1
    • 2
    • 3
    • 4

    image-20230906140012690

    解决方案

    增加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>
    
    • 1
    • 2
    • 3
    • 4
    • 5

    如果springfox版本为2.0.9,那就用

     <dependency>
        <groupId>com.github.xiaoymingroupId>
        <artifactId>knife4j-spring-boot-starterartifactId>
        <version>2.0.5version>
    dependency>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    swagger3

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

    <dependency>
        <groupId>com.github.xiaoymingroupId>
        <artifactId>knife4j-spring-boot-starterartifactId>
        <version>3.0.3version>
    dependency>
    
    • 1
    • 2
    • 3
    • 4
    • 5

    swagger配置类

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

    @EnableKnife4j
    
    • 1

    yml中增加

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

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

    效果

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

    image-20230906141358629

    题外话

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

  • 相关阅读:
    paperswithcode使用方法
    ros2与windows入门教程-修改域Domain_ID
    数据结构与算法——线性表(链表篇)
    利用WPS功能破解及本地恢复密码
    八种流行的网络协议
    Win 10: vscode latex环境配置
    【自然语言处理(NLP)】基于BiLSTM的关系抽取
    (AHB VIP为例)Verdi UVM/interactive debug mode简单使用
    有趣的23000----整理(10)G词根
    微服务容器部署与持续集成(Jenkins)
  • 原文地址:https://blog.csdn.net/qq_27808011/article/details/132715653