Swagger虽好,上线前记得删!3步教你安全移除,避免踩坑
你是不是开发API时,靠Swagger调试得顺风顺水,上线时却随手把它留在了生产环境?别大意——这个小疏忽,可能给你的系统埋下安全炸弹。
为什么必须删除Swagger?
Swagger作为API文档工具,在开发阶段帮我们省了不少事,但生产环境留着它,风险可不小:
- 接口细节暴露:Swagger会公开所有接口的路径、参数、返回格式,攻击者能轻松找到漏洞(比如未授权接口、敏感参数),发起针对性攻击(如SQL注入、越权访问)。
- 资源浪费:Swagger的服务在生产环境运行,会占用内存、CPU,拖慢系统性能。
- 隐私泄露:如果接口参数包含手机号、身份证号等敏感信息,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字)
