swagger删除

yax 2026-04-14 1825
swagger删除摘要: Swagger虽好,上线前记得删!3步教你安全移除,避免踩坑你是不是开发API时,靠Swagger调试得顺风顺水,上线时却随手把它留在了生产环境?别大意——这个小疏忽,可能给你的系统埋下安全炸弹。为什么必须删除Swagger?Swag...

Swagger虽好,上线前记得删!3步教你安全移除,避免踩坑

你是不是开发API时,靠Swagger调试得顺风顺水,上线时却随手把它留在了生产环境?别大意——这个小疏忽,可能给你的系统埋下安全炸弹

为什么必须删除Swagger?

swagger删除

Swagger作为API文档工具,在开发阶段帮我们省了不少事,但生产环境留着它,风险可不小:

  1. 接口细节暴露:Swagger会公开所有接口的路径、参数、返回格式,攻击者能轻松找到漏洞(比如未授权接口、敏感参数),发起针对性攻击(如SQL注入、越权访问)。
  2. 资源浪费:Swagger的服务在生产环境运行,会占用内存、CPU,拖慢系统性能。
  3. 隐私泄露:如果接口参数包含手机号、身份证号等敏感信息,Swagger页面会直接展示,等于把用户隐私“送”给黑客。

曾有某电商平台因未删Swagger,被攻击者利用公开接口批量获取用户信息,造成百万级数据泄露——这个教训,值得所有开发者警惕。

3步安全移除Swagger(以Spring Boot为例)

第一步:关闭Swagger配置

在生产环境的配置文件(如application-prod.yml)中添加:

  • 若用Springfox(旧版Swagger):
    springfox.documentation.swagger.v2.enabled: false
  • 若用SpringDoc(新版Swagger,适配Spring Boot 3):
    springdoc.api-docs.enabled: false
    springdoc.swagger-ui.enabled: false

这样能直接禁用Swagger的文档生成和UI页面。

第二步:移除依赖

打开pom.xml(Maven)或build.gradle(Gradle),删除Swagger相关依赖:

  • Springfox:
    <dependency>
      <groupId>io.springfox</groupId>
      <artifactId>springfox-swagger2</artifactId>
      <version>2.9.2</version>
    </dependency>
    <dependency>
      <groupId>io.springfox</groupId>
      <artifactId>springfox-swagger-ui</artifactId>
      <version>2.9.2</version>
    </dependency>
  • SpringDoc:
    <dependency>
      <groupId>org.springdoc</groupId>
      <artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
      <version>2.2.0</version>
    </dependency>

第三步:清理代码注解

检查项目中是否有@EnableSwagger2(Springfox)或@OpenAPIDefinition(SpringDoc)等开启Swagger的注解,注释或删除它们,避免配置冲突。

替代方案:保留文档但不暴露

如果团队需要生产环境的API文档,可生成静态文档

  • 用Swagger导出JSON/HTML文件,存到内部服务器(如公司知识库);
  • 用Postman导出接口文档,分享给内部成员。

这样既满足需求,又不会暴露给外部。

最后提醒

Swagger是开发的“好帮手”,但生产环境的安全永远是第一位。上线前花5分钟移除它,能帮你避开90%的接口安全风险。别让一时的疏忽,成为系统的“致命伤”!

你有没有过忘记删Swagger的经历?欢迎在评论区分享~

(全文约650字)