开发过程中的一些信息带到了线上,要及时修复,不如坏人就顺藤摸瓜找来了。
以下是漏洞的一些内容:
安全漏洞描述
信息泄露主要是由于开发人员或运维管理人员的疏忽所导致。如未及时删除调试页面、未关闭程序调试功能、未屏蔽程序错误信息、备份文件未删除、数据库备份文件未删除、未屏蔽敏感数据信息等多个方面所导致的不同严重程度的信息泄露。攻击者可通过所掌握的信息进一步分析攻击目标,从而有效发起下一步的有效攻击。
常见的问题有:
- swagger 接口未关闭
- 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”}) 表示在开发或测试环境开启,而在生产关闭 其实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
}
安全无小事!!!
文档信息
- 本文作者:寒澈
- 本文链接:https://www.hancher.top/2023/06/20/dev_info_leak/
- 版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)