Hud*_*s87 13 go swagger swagger-ui
我正在开发带有 Swagger UI 的 REST API。当需要公开 API 时,我是否也应该公开 Swagger UI?如果是这样,我将如何将其打包到我的应用程序中。目前,我已经从 GitHub 下载了 UI,并将其存储在我的项目旁边的文件夹中。
我正在使用 Go(带有 Echo 框架)来编写 API。
如果 swagger 暴露于生产环境并且可以公开访问,则可以存在安全线程,如下所示:
攻击面增加: Swagger 成为可能成为潜在拒绝服务 (DoS) 攻击的额外入口点。
信息公开: Swagger 公开有关 API 端点、请求/响应结构和数据模型的详细文档。
注入漏洞: Swagger中暴露的信息,包括数据格式、输入验证和实现细节,可以帮助攻击者发起注入攻击。Ex-SQL 注入或跨站点脚本 (XSS) 可以操纵或危害数据和系统。
未经授权的访问风险: Swagger 配置不当可能会导致对敏感 API 端点或功能进行未经授权的访问。
小智 0
由于安全威胁,我们不应该在生产中大摇大摆。在.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    
        });
}
Run Code Online (Sandbox Code Playgroud)