天行健,君子以自强不息;地势坤,君子以厚德载物
文章目录
背景
近期,在系统进行三方检测时,会进行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
解决方案
增加knife4j增强方案
经过调研,可引入swagger的增强包knife4j,即可进行处理。knife4j的官网,官方文档。
本方案具体修改内容如下:
pom引入依赖
swagger2
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-springdoc-ui</artifactId>
<version>2.0.9</version>
</dependency>
swagger3
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-springdoc-ui</artifactId>
<version>3.0.3</version>
</dependency>
swagger配置类
在swagger的配置类上,增加注解,启动knife4j增强
@EnableKnife4j
yml中增加
在系统的配置文件yml(或properties)中增加
knife4j:
# 开启增强配置
enable: true
# 此处如果是true,swagger就会彻底屏蔽掉无法调用,即是输入账号密码后,也无法访问
#production: true
basic:
enable: true
# Basic认证用户名
username: test
# Basic认证密码
password: 123
效果
按照上面的方式进行配置后,当访问swagger的页面,会显示
题外话
增加knife4j增强后,可访问{ip:port}/doc.html,访问到增强的swagger-ui页面,类似postman、apifox的页面,可以尝试,很好用!
本文含有隐藏内容,请 开通VIP 后查看