生产中 Swagger UI 的最佳实践

问题描述 投票:0回答:3

我正在开发带有 Swagger UI 的 REST API。当需要公开 API 时,我是否也应该公开 Swagger UI?如果是这样,我将如何将其打包到我的应用程序中。目前,我已经从 GitHub 下载了 UI,并将其存储在我的项目旁边的文件夹中。

我正在使用 Go(带有 Echo 框架)来编写 API。

go swagger swagger-ui
3个回答
6
投票

如果 swagger 暴露于生产环境并且可以像这样公开访问,则可以存在安全线程:

  • 增加攻击面:Swagger 成为潜在拒绝服务 (DoS) 攻击的额外入口点。

  • 信息公开: Swagger 公开有关 API 端点、请求/响应结构和数据模型的详细文档。

  • 注入漏洞:Swagger中暴露的信息,包括数据格式、输入验证和实现细节,可以帮助攻击者发起注入攻击。 Ex- SQL 注入或跨站脚本 (XSS) 可以操纵或危害数据和系统。

  • 未经授权的访问风险: Swagger 配置不当可能会导致对敏感 API 端点或功能进行未经授权的访问。


2
投票

出于安全威胁,我们不应该在生产中启用 swagger。 在.net core 6.0版本中,我们可以在Program.cs中使用以下代码来保护它。

if(!app.Environment.IsProduction())    
{        
    app.UseSwaggerUI(c =>        
        {    
            c.SwaggerEndpoint("/swagger/v1/swagger.json", "My Service");    
            c.RoutePrefix = string.Empty;  // Set Swagger UI at apps root    
        });
}

0
投票

这是我发现的一个博客,可以在访问 UI SPA 本身时使用中间件启用 aad 身份验证:https://blog.cellenza.com/en/cloud/secure-access-to-swagger-ui-with-azure-活动目录/

© www.soinside.com 2019 - 2024. All rights reserved.