Swagger API 信息泄露漏洞解决方案

Swagger API 信息泄露漏洞

	Swagger 是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。总体目标是使客户端和文件系统作为服务器以同样的速度来更新。相关的方法,参数和模型紧密集成到服务器端的代码,允许API来始终保持同步。

Swagger生成的API文档,是直接暴露在相关web路径下的。所有人均可以访问查看。通过这一点即可获取项目上所有的接口信息。那么结合实际业务,例如如果有文件读取相关的接口,可能存在任意文件下载,相关的业务访问可能存在未授权访问等。

解决办法

  1. 在生产节点禁用Swagger2,在maven中禁用所有关于Swagger包(不建议)
  2. 结合SpringSecurity/shiro进行认证授权,将Swagger-UI的URLs加入到各自的认证和授权过滤链中,当用户访问Swagger对应的资源时,只有通过认证授权的用户才能进行访问。
swagger:
  config:
    # 开启身份认证功能
    login: true
    username: admin@190610
    password: admin@190610
  1. 结合nginx/Filter对对应的接口端点进行访问控制。
    enable = false 关闭
 @Bean
    public Docket createRestApi() {
        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo()).enable(false)
                .select()
                //为当前包路径
                .apis(RequestHandlerSelectors.any())
                .paths(PathSelectors.any())
                .build();
    }

你可能感兴趣的:(java,java)