听说你在生产环境下还没关闭Swagger2,算你猛

简介: Swagger用于开发期间前端和后端API上的交流使用,请注意是开发期间也就是开发环境,测试环境也可以使用,但是生产环境就不需要使用了,因为生产环境前端已经和后端打通了就不需要在使用Swagger了,如果生产环境没有关闭Swagger有啥后果?

云栖号资讯:【点击查看更多行业资讯】
在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来!

Swagger用于开发期间前端和后端API上的交流使用,请注意是开发期间也就是开发环境,测试环境也可以使用,但是生产环境就不需要使用了,因为生产环境前端已经和后端打通了就不需要在使用Swagger了,如果生产环境没有关闭Swagger有啥后果?这要看你写的程序的安全性了,一般swagger都是用于公司内部项目,一般安全防护都不高(稍微有点安全性就是加个密码),如果swagger暴露出来只要知道这个地址就能访问的话,那么你的api彻彻底底的暴露出去了,对于一些人能够从api中能够看出一些端倪,从而危害生产环境程序,还有一般swagger中都有一些为了便于开发调试的一些小后门比如一些mock接口,这些接口暴露出去危害非常大。

关闭Swagger有两种方式:

  • 方式一:在Swagger2Config上使用@Profile注解标识,@Profile({"dev","test"})表示在dev和test环境才能访问swagger-ui.html,prod环境下访问不了
  • 方式二:在Swagger2Config上使用@ ConditionalOnProperty注解,@ConditionalOnProperty(name = "swagger.enable", havingValue = "true")表示配置文件中如果swagger.enable =true表示开启。所以只需要在开发环境的配置文件配置为true,生产环境配置为false即可。
@Configuration
@EnableSwagger2
//@Profile({"dev","test"})
@ConditionalOnProperty(name = "swagger.enable", havingValue = "true")
public class Swagger2Config {

}

这两种方式我一般使用第一种方式,因为第二种方式还要在每个环境文件中去配置,还要维护此值;Swagger一般用于开发和测试环境,所以直接限制Swagger启用的环境为dev和test即可,这样也不需要再维护配置文件了。

InteliJ IDEA 2019.03.03最新激活jetbrains-agent.jar

1.将jetbrains-agent.jar也放到InteliJ IDEA中的bin目录下。

0EDF377A_8020_44f8_BD68_775595600E87

2.配置VM Options,通过Help菜单 -> Edit Custom VM Options。

624E23CC_82F0_4ce0_ACD0_7CA54DFD3370

在文件中最后一行添加如下配置,如果是Windows电脑就写你自己电脑jetbrains-agent.jar实际放入的绝对路径,如 -javaagent:D:\xxxjetbrains-agent.jar。

FE17BF34_4AF5_4611_B535_0E6F0649BE4D

184FBCCC_B25D_420f_A57F_16780E5DE932

也可以直接编辑idea.vmoptions文件增加-javaagent配置,不过建议使用上面菜单的配置方式。

F3A10BCE_52CE_4c61_92F7_6509D3C32A6E

3.重启IDEA,选择License Server, 输入最新的值为 http://fls.jetbrains-agent.com, 点击Test Connection 或者 Close即可。本方法亲测有效,已经使用了一段时间仍然有效。

10F88249_A45D_451f_8889_F4676C20CF35

【云栖号在线课堂】每天都有产品技术专家分享!
课程地址:https://yqh.aliyun.com/live

立即加入社群,与专家面对面,及时了解课程最新动态!
【云栖号在线课堂 社群】https://c.tb.cn/F3.Z8gvnK

原文发布时间:2020-04-13
本文作者:Java实用技术
本文来自:“互联网架构师 微信公众号”,了解相关信息可以关注“互联网架构师”

相关文章
|
移动开发 前端开发 Java
使用ipaguard插件对Spring Boot程序进行代码混淆
使用ipaguard插件对Spring Boot程序进行代码混淆
893 0
|
消息中间件 数据安全/隐私保护 容器
RabbitMQ修改密码
RabbitMQ修改密码
2151 0
|
10月前
|
机器学习/深度学习 JSON API
1688图片识别商品接口API使用指南
1688图片识别商品API基于深度学习技术,支持上传图片或URL,精准识别1688平台商品信息,涵盖标题、链接、价格、供应商等。适用于批发采购、货源匹配等场景,具备高精度、低延迟、强兼容特性,支持主流图片格式,遵循RESTful规范,助力开发者高效对接1688商品生态。
|
前端开发 Java 微服务
微服务——SpringBoot使用归纳——Spring Boot中的MVC支持——@PathVariable
`@PathVariable` 是 Spring Boot 中用于从 URL 中提取参数的注解,支持 RESTful 风格接口开发。例如,通过 `@GetMapping("/user/{id}")` 可以将 URL 中的 `{id}` 参数自动映射到方法参数中。若参数名不一致,可通过 `@PathVariable("自定义名")` 指定绑定关系。此外,还支持多参数占位符,如 `/user/{id}/{name}`,分别映射到方法中的多个参数。运行项目后,访问指定 URL 即可验证参数是否正确接收。
1110 0
|
存储 安全 Java
Spring Security Oauth2 之 密码模式请求/oauth/token 解析
前言 文本已收录至我的GitHub仓库,欢迎Star:https://github.com/bin392328206/six-finger 种一棵树最好的时间是十年前,其次是现在
2653 0
|
运维 监控 Java
Tomcat配置参数connection-timeout的详细解析和应用讨论
`connection-timeout` 的配置需要根据实际的应用场景、服务器性能、网络环境以及用户行为来决定。因此,开发和运维团队通常需要结合应用特点和监控数据,经过一系列的测试和调优,来确定一个既能保证用户体验,又能维护服务器稳定性和安全性的最优值。
1177 0
|
Java 应用服务中间件 Maven
SpringBoot项目打包成war包
通过上述步骤,我们成功地将一个Spring Boot应用打包成WAR文件,并部署到外部的Tomcat服务器中。这种方式适用于需要与传统Servlet容器集成的场景。
1939 8
|
Java 数据库连接 Spring
使用Spring Boot实现数据脱敏
通过上述步骤,您可以使用Spring Boot实现数据脱敏功能。在实际应用中,可以根据具体需求调整脱敏逻辑和策略,以确保敏感数据在传输和展示过程中得到有效保护。这种方法不仅可以提高数据安全性,还能满足合规性要求,保护用户隐私。
1275 19
|
Java API Nacos
Caused by: java.lang.IllegalStateException: No Feign Client for loadBalancing defined. Did you forge
Caused by: java.lang.IllegalStateException: No Feign Client for loadBalancing defined. Did you forge
1209 2
|
Java Spring
SpringCloud - allowBeanDefinitionOverriding(spring.main.allow-bean-definition-overriding)分析
SpringCloud - allowBeanDefinitionOverriding(spring.main.allow-bean-definition-overriding)分析
2188 0