中间件版本号泄露问题修复

2023/06/20 安全 共 1330 字,约 4 分钟

开发过程中的一些信息带到了线上,要及时修复,不如坏人就顺藤摸瓜找来了。

以下是漏洞的一些内容:

安全漏洞描述

信息泄露主要是由于开发人员或运维管理人员的疏忽所导致。如未及时删除调试页面、未关闭程序调试功能、未屏蔽程序错误信息、备份文件未删除、数据库备份文件未删除、未屏蔽敏感数据信息等多个方面所导致的不同严重程度的信息泄露。攻击者可通过所掌握的信息进一步分析攻击目标,从而有效发起下一步的有效攻击。

常见的问题有:

  1. swagger 接口未关闭
  2. druid监控台未关闭

风险等级:低

解决办法

关闭相关接口的线上权限,或增加权限控制

1,swagger 关闭入口的方式
方法a: 使用注解 @Value() 推荐使用, 然后在不同的配置文件里指定开关

@Value("${swagger.enabled}")
private boolean enabled;

@Bean
public Docket createRestApi()
{
    return new Docket(DocumentationType.V1)
            // 是否启用Swagger           
             .enable(enabled)
            // 用来创建该API的基本信息,展示在文档的页面中(自定义展示的信息)            
            .apiInfo(apiInfo())
            // 设置哪些接口暴露给Swagger展示           
             .select()
            // 扫描所有有注解的api,用这种方式更灵活           
             .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))
            // 扫描指定包中的swagger注解            
            // .apis(RequestHandlerSelectors.basePackage("com.ruoyi.project.tool.swagger"))           
             // 扫描所有 .apis(RequestHandlerSelectors.any())            
             .paths(PathSelectors.any())
            .build()
            /* 设置安全模式,swagger可以设置访问token */          
            .securitySchemes(securitySchemes())
            .securityContexts(securityContexts())
            .pathMapping(pathMapping);
}

方法b: 使用注解@Profile({“dev”,“test”}) 表示在开发或测试环境开启,而在生产关闭 swagger-switch 其实ab 的方式是一样的,都是不同的环境开关不同。

2, druid关闭监控台的方式

spring.datasource.druid.webStatFilter.enabled=false
spring.datasource.druid.statViewServlet.enabled=false

3, 一些其他接口增加权限认证
通过spring的httpSecurity 增加路径鉴权

protected void configure(HttpSecurity httpSecurity) throws Exception {
    // something
    // druid 接口要鉴权
    httpSecurity..antMatchers("/druid/**").authenticated()
    // something
}

安全无小事!!!

文档信息

Search

    Table of Contents