springboot项目关闭swagger防止漏洞扫描

为了应对安全扫描,再生产环境下关闭swagger ui

1、项目中关闭swagger

在这里用的是config配置文件的方式关闭的

@Configuration
@EnableSwagger2
public class SwaggerConfig implements WebMvcConfigurer {@Value("${swagger.enable}")private Boolean enable;@Beanpublic Docket swaggerPersonApi10() {return new Docket(DocumentationType.SWAGGER_2).enable(enable)    //配置在该处生效.select().apis(RequestHandlerSelectors.basePackage("com.unidata.cloud.logservice.api.controller")).paths(PathSelectors.any()).build().apiInfo(apiInfo());}private ApiInfo apiInfo() {return new ApiInfoBuilder().version("1.0").title("").contact(new Contact("", "", "")).description("").build();}}

在application.properties中增加

swagger.enable: false

来控制关闭,如果想开启就改为true

2、到这里其实已经关闭swagger 了,但是安全扫描还是不能通过,因为访问swagger-ui.html路径会跳出提示swagger已关闭的页面,而安全扫描只要返回的页面中含有swagger的字符,就会不通过,这里还需要一步,让访问swagger-ui.html页面直接返回404

首先新增一个监听config

public class SwaggerInterceptor implements HandlerInterceptor {@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {String requestUri = request.getRequestURI();if (requestUri.contains("swagger-ui")) {response.sendRedirect("/404"); // 可以重定向到自定义的错误页面return false;}return true;}
}

然后在之前的config中添加一段代码

    @Overridepublic void addInterceptors(InterceptorRegistry registry) {registry.addInterceptor(new SwaggerInterceptor()).addPathPatterns("/**");}

好的,到这里就已经彻底关闭swagger了

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/812786.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【项目实战】记录一次PG数据库迁移至GaussDB测试(上)

目录 一、说明 1.1、参考文档 1.2、注意事项 1.3、环境基本情况 二、GaussDB新环境安装 2.1 配置操作环境变量 2.1.1 关闭防火墙 步骤1 执行以下命令,检查防火墙是否关闭。 步骤2 执行以下命令,关闭防火墙并禁止开机启动。 步骤3 修改/etc/sel…

Django序列化常用字段与参数

Django序列化常用字段与参数 目录 Django序列化常用字段与参数序列化常见字段序列化常见参数 序列化常见字段 字段含义字段构造方式BooleanField布尔值判断(True/False)BooleanField()NullBooleanField布尔值判断(可以为Null)NullBooleanField()CharField文本字符串CharField(…

MySQL 中datatime 与 timestamp区别

在 MySQL 中,DATETIME 和 TIMESTAMP 是两种用于存储日期和时间的数据类型,它们有以下区别: 存储范围: DATETIME:存储的日期和时间范围从 ‘1000-01-01 00:00:00’ 到 ‘9999-12-31 23:59:59’。TIMESTAMP:存…

单细胞RNA测序(scRNA-seq)Cellranger流程入门和数据质控

单细胞RNA测序(scRNA-seq)Cellranger流程入门和数据质控 单细胞RNA测序(scRNA-seq)基础知识可查看以下文章: 单细胞RNA测序(scRNA-seq)工作流程入门 单细胞RNA测序(scRNA-seq)细胞分离与扩增 1. 单细胞RNA-seq样本数据说明 样本数据来源文章:Acquired cancer re…

【计算机毕业设计】基于微信小程序的开发项目150套(附源码+演示视频+LW)

大家好!我是程序猿老A,感谢您阅读本文,欢迎一键三连哦。 🧡今天给大家分享200的微信小程序毕业设计,后台用Java开发,这些项目都经过精心挑选,涵盖了不同的实战主题和用例,可做毕业设…

1.点亮第一个LED

#include "reg52.h" sbit LED1P2^0; //将P2.0管脚定义为LED1void main() { LED10; //LED1端口设置为低电平 while(1) { } } 接线说明 为了使LED灯能够正常工作,需要将其正确地连接到单片机的某个输出端口。在这…

【运维笔记】负载均衡的原理与算法——以Nginx为例

一、负载均衡的定义及其重要性 负载均衡是一种广泛应用于数据中心和云计算环境的技术,它能够将工作负载均匀地分配到服务器集群中的多个服务器上。这一技术的核心目的是优化资源利用率,提高服务可靠性,降低响应时间,从而保障网络…

linux c多进程通信之共享内存和信号量

编译环境:Ubuntu16.04 64位 交叉编译工具:arm-hisiv500-linux-gcc 文章目录 1. 项目背景2. 涉及的函数3. 头文件JShm.h4. 类的实现5. sample代码 1. 项目背景 最近项目中需要用到共享内存的交互,取走旧数据,取数据不及时写入覆盖…

MQ概览及Kafka详解

文章目录 概览MQ优点MQ缺点常见MQ对比JMS消息模型点对点模式发布订阅模式 kafka基础架构发布订阅工作流程生产者生产者文件存储生产者分区策略生产者数据可靠性保证生产者数据一致性保证生产者ack机制ExactlyOnce生产者发送消息流程 消费者消费者分区分配策略消费者消费数据问题…

算法设计与分析实验报告c++实现(TSP问题、哈夫曼编码问题、顾客安排问题、最小生成树问题、图着色问题)

一、实验目的 1.加深学生对贪心算法设计方法的基本思想、基本步骤、基本方法的理解与掌握; 2.提高学生利用课堂所学知识解决实际问题的能力; 3.提高学生综合应用所学知识解决实际问题的能力。 二、实验任务 用贪心算…

streamlit 大模型前段界面

结合 langchain 一起使用的工具,可以显示 web 界面 pip install streamlit duckduckgo-search 运行命令 streamlit run D:\Python_project\NLP\大模型学习\test.py import os from dotenv import load_dotenv from langchain_community.llms import Tongyi load…

基于springboot的大学城水电管理系统源码数据库

基于springboot的大学城水电管理系统源码数据库 随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已逐步成熟。本文介绍了大学城水电管理系统的开发全过程。通过分析大学城水电管理系统管理的不足,创建了一个计算机管理大学城水…

matlab学习002-函数及流程控制语句

目录 一,matlab编程基础 1)matlab脚本和函数文件 ①脚本文件 ②函数文件 2)函数的定义和调用 ①定义 ②调用 3)程序流程控制 ①使用for求 122^2……2^622^63之和 ②使用while语句求122^2……2^622^63之和 ③使用matl…

Python学习(三)

函数扩展 多返回值 参数扩展 位置参数 注意:传递的参数和定义的参数的顺序及个数必须一致 关键字参数 关键字名称必须和形参名称相同,形参叫name,那么关键字也要写name 不定长参数 缺省参数

C语言奇技淫巧之--“函数指针数组”的类型定义与结构化初始化某一个函数

精力有限,就不写前言后序了,懂的都懂,直接上代码。 快速回忆点: # 类型定义 typedef int (*my_func_t)(int a, void *b)# 函数指针数组结构体定义 struct my_ops {int (*func[FUNC_TYPE_MAX])(int a, void *b); };# 函数指针数组…

Java8 Stream流的sorted()的排序【正序、倒序、多字段排序】

针对集合排序,java8可以用Stream流的sorted()进行排序。 示例Bean 以下我们会使用这个Bean来做示例。 public class Order {private String weight;private Double price;private String dateStr;//忽略getter、setter、构造方法、toString }字段排序 首先是比较器…

职场新员工倒挂老员工工资

职场的工资倒挂和工资构成 一个公司招新员工要开多少工资 主要取决于其他大厂出多少钱以及当年就业市场的行情。职场中常出现工资倒挂现象,即新员工的工资高于老员工。公司宁愿高薪招新员工而不给老员工加工资,主要是因为新员工的工资由市场决定&#…

【优选算法专栏】专题十:哈希表(一)

本专栏内容为:算法学习专栏,分为优选算法专栏,贪心算法专栏,动态规划专栏以及递归,搜索与回溯算法专栏四部分。 通过本专栏的深入学习,你可以了解并掌握算法。 💓博主csdn个人主页:小…

[yotroy.cool]Haskell笔记一 —— 入门 算数 运算符 未定义变量 列表 字符串 类型

个人博客https://www.yotroy.cool/,欢迎关注我哦~ 添加模块 ghci> :module Data.Ratio算数 - * / ** ^ % 基本的 ghci> 7.0 / 2.0 3.5 ghci> 7 / 2 3.5ghci> 2 2 4 ghci> () 2 2 4** 和 ^ - ** 可用于浮点数幂 ghci> 2.2**3.3 …

分治法python

分治法(Divide and Conquer)是一种重要的算法设计技巧,它将一个难以直接解决的问题分解成两个或更多的相同或相似的子问题,递归地解决这些子问题,然后将子问题的解组合起来,从而解决原问题。 以求最大值为例,假设我们有一个整数数组,我们想找到数组中的最大值。使用分…