跳过导航

某次安全漏洞整改

后端

高危漏洞 Apache Druid 默认口令

题外话 Druid 监控页

一头雾水, 关于Druid监控也是刚刚开始了解 ,不知道怎么进行整改 Druid监控踩坑指南

基本判断问题原因

spring application.yaml相关配置存在下面这段配置

spring:
  datasource:
    druid:
      stat-view-servlet:
        pattern: /druid/*
        enabled: true
        login-username: admin
        login-password: 123456
        allow:
        reset-enable: false
      web-stat-filter:
        enabled: true
# 省略

这里应该扫描存在漏扫的情况 上面 Apache Druid指的是 大数据项目中的Apache Druid数据库连接池

名称:Apache Druid作用:大数据实时分析存储系统(独立安装、独立端口,比如 8888)

当前配置的连接

名称:Alibaba Druid 数据库连接池作用:管理 MySQL/PG 等数据库连接,自带一个监控后台 /druid

当前项目访问 http://localhost:端口/druid 一直是404 这里并没有开启这一块

多次修改配置文件后后仍然无果,但是AI 给出了以下解释

# 我直接告诉你**最根本、最真实的原因**
结合你给的所有信息:
**Spring Boot 3.5.5 + druid-spring-boot-3-starter 1.2.24 → 官方本身就不支持 /druid 监控页面!**

## 一句话真相
**druid-spring-boot-3-starter 1.2.24 监控页面(/druid)功能残缺,404 是必然的,不是你配置错!**

---

# 为什么你怎么改都 404?(官方级原因)
1. **你用的是 Spring Boot 3.5.5(最新版)**
2. **druid-spring-boot-3-starter 1.2.24 对 SB3 支持不完整**
3. **监控页面的 Servlet 没有被注册 → 访问 404**

这不是配置问题,是**jar 包本身不支持**

---

# 唯一能让你看到 /druid 监控页的方案
## 方案:升级到 **真正支持 Spring Boot 3 的 Druid 新版本**
把你的依赖换成 **阿里官方修复后的新版本**

### pom.xml 直接替换
```xml
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid-spring-boot-3-starter</artifactId>
    <version>1.2.24</version>
</dependency>

<!-- 加上这个!必须加! -->
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid</artifactId>
    <version>1.2.24</version>
</dependency>
```

### 配置保持你现在的即可
```yaml
spring:
  datasource:
    druid:
      stat-view-servlet:
        enabled: true
        pattern: /druid/*
        login-username: admin
        login-password: 123456
        allow:
        reset-enable: false
      web-stat-filter:
        enabled: true
```

---

# 如果还是不行 → 终极方案(100% 成功)
Spring Boot 3 下 **Druid 监控页就是不稳定**
最稳妥方案:**直接关闭 Druid 监控**(安全整改也推荐这么做)

```yaml
spring:
  datasource:
    druid:
      stat-view-servlet:
        enabled: false  # 关闭
      web-stat-filter:
        enabled: false
```

---

# 回到你最开始的安全漏洞问题(最终结论)
你是 **普通Java后端**
漏洞报告的 **Apache Druid 弱口令 = 误报**

你只需要做一件事:
## ✅ 安全整改完成 = 关闭 Druid 监控
```yaml
enabled: false
```

---

# 最终总结(最关键)
1. **你没做错任何配置**
2. **Spring Boot 3 + druid-starter 监控页本身就有BUG**
3. **404 不是你的问题,是包不支持**
4. **安全漏洞 = 误报,直接关闭监控即可完成整改**

这里的的监控在 spring boot 3 并不默认开启,可能需要注入bean配合配置文件才能开启

csdn

中危漏洞 Swagger UI 敏感信息泄露

这里我还是可以在application.yaml找到代码中有这样的配置

#swagger
knife4j:
  #开启增强配置
  enable: false
  #开启生产环境屏蔽
  production: true
  basic:
    enable: false
    username: jeecg
    password: jeecg1314
    #  省略

我自信的修改配置为关闭之后发现并没有效果,多次尝试还是不行,寻找之后找到了原因



你现在的配置 **`knife4j.enable: false` + `production: true`**  
**理论上应该关闭 Swagger,但在 JeecgBoot 里不生效!**

原因:
**JeecgBoot 对 Swagger/Knife4j 做了全局封装,配置优先级比你写的高,你单独改 application.yml 不生效!**

---

# 最快、100% 解决「Swagger UI 敏感信息泄露」方案
## 方案 1:生产环境**彻底关闭 Swagger**(最安全,推荐)
不用改配置,直接加 **启动参数** 或在 `application-prod.yml` 加:

```yaml
# 加在 application-prod.yml 最下面
springdoc:
  api-docs:
    enabled: false
  swagger-ui:
    enabled: false
```

JeecgBoot 新版用的是 **springdoc**,不是 knife4j 控制!
你关 knife4j 没用,必须关 **springdoc**

---

## 方案 2:不关闭,但加密码保护(符合等保要求)
```yaml
knife4j:
  enable: true
  production: false  # 必须false才能开密码
  basic:
    enable: true    # 开启认证
    username: admin
    password: 你的强密码
```

这样访问 `/doc.html` 必须输账号密码才能进。

---

# 为什么你本地改了不生效?
因为 **JeecgBoot 架构规则**
1. 前端 + 后端 **统一控制 Swagger 的是 springdoc,不是 knife4j**
2. 你改的 knife4j 配置,在框架里被覆盖了
3. 只有 **springdoc.enabled: false** 才能真正关闭

---

# 最终你只需要做这一步(最安全)
在你的 **application-prod.yml** 添加:
```yaml
springdoc:
  api-docs:
    enabled: false
  swagger-ui:
    enabled: false
```

重启服务 → **Swagger UI 彻底关闭**  
漏洞直接解决!

再次尝试之后的确发现这个接口访问不到了

的确解决了 spring boot 上层框架的 JeecgBoot的配置导致

前端

低危漏洞

这里的漏洞很明显分为两类 但是都是需要在nginx conf 中进行配置即可解决的问题 分别如下

开启 options 方法

漏洞详情如下

弱点描述: Web 服务器配置为允许使用危险的 HTTP 方法,如 PUT、MOVE、COPY、DELETE、PROPFIND、 SEARCH、MKCOL、LOCK、UNLOCK、 PROPPATCH,该配置可能允许未授权的用户对 Web 服 务器进行敏感操作。

这里选择策略是 做过滤 选择部分方法可以进行通行

修改容器内配置文件 /etc/nginx/conf.d/default.conf

    server {

        listen       80;

        ; 新增下面的这个内容

        # 漏洞描述:Web服务器允许使用危险的HTTP方法
        # 作用:只允许安全的HTTP方法,禁止PUT/DELETE等危险方法
        # 注意:必须允许OPTIONS方法(用于CORS跨域请求)
        if ($request_method !~ ^(GET|POST|HEAD|OPTIONS)$ ) {
            return 405;
        }

        location /jeecgboot/ {
          ; 省略
        }

        
        location / {
          ; 省略
        }

    }

详细解释

  • $request_method Nginx 内置变量,自动获取 HTTP 请求的方法名(字符串)。

常见值:GET、POST、PUT、DELETE、HEAD、OPTIONS、PATCH 等,均为大写。

  • !~ 这是 Nginx 的 正则表达式否定匹配运算符(区分大小写)。

    作用:测试左边的字符串 是否不匹配 右边的正则表达式。 如果不匹配,条件为真;如果匹配,条件为假。

      与之类似的操作符:
      ~ :区分大小写的正则匹配
      ~* :不区分大小写的正则匹配
      !~* :不区分大小写的正则不匹配
  • ^(GET|POST|HEAD|OPTIONS)$ 这是一个正则表达式,用于匹配 HTTP 方法字符串:
    • ^ :匹配字符串开头
    • (GET|POST|HEAD|OPTIONS) :分组,表示其中任意一个字符串
    • | :逻辑“或”
    • $ :匹配字符串结尾

缺少X-XXX响应头


这里同样需要在配置文件中进行新增配置项 类似如下 > add_header X-Frame-Options "SAMEORIGIN" always;
  • add_header 是返回数据时候新增的 响应头 如果对应要对转发新增请求头应该用 proxy_set_header

proxy_set_header X-Custom-Header “value”;

  • 这里还踩了一个坑 ,开始这里放入 server{} 代码块中不生效 ,需要放入 location / {} 这里的代码块中

附带一份关于上面需要新增安全响应头的清单和解释

# HTTP 安全响应头配置说明文档
## 一、文档说明
本文档用于说明当前 Nginx 配置中**8 项 HTTP 安全响应头**的作用、配置值含义、安全漏洞修复目标,可直接用于安全整改报告、验收材料、运维归档。

---

# 二、安全响应头详情(逐条说明)

## 1. Content-Security-Policy(CSP,内容安全策略)
### 作用
- 核心用于**防御 XSS 跨站脚本攻击**
- 限制页面可加载的资源来源(脚本、样式、图片、接口、字体等)
- 防止恶意资源注入、数据窃取、页面篡改

### 当前配置值(API 接口)
```
default-src 'self'; connect-src 'self';
```

### 值含义
- `default-src 'self'`:默认所有资源**只允许从当前域名加载**
- `connect-src 'self'`:仅允许向当前域名发起 AJAX/_fetch/API 请求
- 整体策略:**严格限制外部资源,仅信任自身源**,适合后端 API 接口


### 遇见坑和怎么解决的

#### 图片显示不出来
*  背景 当前项目是 yzt.local 其中图片资源在 yzt.local:9000 使用 minio 公开桶取的图片资源

* 导致   图片资源显示跨域 不可以访问

* 修改 需要在前端的 localtion / {} 加上下面的内容

>  img-src 'self' data: https: yzt.local:9000; 

#### 解释
- `img-src` = 管图片
- `'self'` = 自己网站
- `data:` = base64图片
- `https:` = 所有HTTPS
- `yzt.local:9000` = 我的文件服务器




#### 音频无法播放

CSP 策略没法在网站上播放

新增以下内容
> media-src 'self' blob: data:;

1. **media-src**
   规则类型:控制**音频/视频**资源的加载来源。

2. **'self'**
   允许加载**当前网站自身域名**下的媒体文件。

3. **blob:**
   允许加载 **Blob 二进制流** 媒体(如前端生成/处理的音视频)。

4. **data:**
   允许加载 **Data URL  base64** 格式的媒体资源。

5. **;**
   规则结束分隔符。

---

### 总结
这条 CSP 规则:**只允许从本站、Blob 流、base64 三种来源加载音视频**,禁止其他外部域名媒体。
---

## 2. Referrer-Policy(引用来源策略)
### 作用
- 控制浏览器在跳转、请求时**是否携带 Referer 地址**
- 防止敏感 URL、路径、参数被泄露到第三方网站
- 修复漏洞:`HTTP Referrer Policy 缺失`

### 当前配置值
```
strict-origin-when-cross-origin
```

### 值含义
- 同源请求:完整发送 Referer
- 跨域请求:**只发送域名(Origin),不发送完整路径和参数**
- 安全性与兼容性平衡,是目前推荐标准配置

---

## 3. X-Content-Type-Options
### 作用
- 禁止浏览器对资源类型进行**MIME 嗅探**
- 防止攻击者通过篡改文件类型执行 MIME 混淆攻击
- 修复漏洞:`HTTP X-Content-Type-Options 缺失`

### 当前配置值
```
nosniff
```

### 值含义
- 强制浏览器**严格使用服务器返回的 Content-Type**
- 不自动猜测文件类型,避免脚本、HTML 被伪装执行

---

## 4. X-Download-Options
### 作用
- 针对 IE 等旧浏览器
- 防止下载文件时**自动打开执行**,避免恶意文件直接运行
- 修复漏洞:`HTTP X-Download-Options 缺失`

### 当前配置值
```
noopen
```

### 值含义
- 下载文件后**仅保存,不直接打开**
- 降低恶意文件自动执行风险

---

## 5. X-Permitted-Cross-Domain-Policies
### 作用
- 控制 Flash/Silverlight 等插件的跨域权限
- 禁止加载第三方跨域策略文件,防止越权读取数据
- 修复漏洞:`HTTP X-Permitted-Cross-Domain-Policies 缺失`

### 当前配置值
```
none
```

### 值含义
- 完全**禁止任何跨域策略文件**
- 无任何跨域授权,最严格安全策略

---

## 6. X-XSS-Protection
### 作用
- 启用旧版浏览器内置的 **XSS 过滤器**
- 检测并拦截反射型 XSS 攻击
- 修复漏洞:`HTTP X-XSS-Protection 缺失`

### 当前配置值
```
1; mode=block
```

### 值含义
- `1`:开启 XSS 保护
- `mode=block`:检测到 XSS 时**直接阻塞页面渲染**,而非仅过滤内容

---

## 7. X-Frame-Options
### 作用
- 防止页面被其他网站通过 `<iframe>` 嵌套
- 抵御**点击劫持(Clickjacking)**攻击
- 修复漏洞:`X-Frame-Options Header 未配置`

### 当前配置值
```
SAMEORIGIN
```

### 值含义
- 仅允许**同源域名**嵌套当前页面
- 其他网站无法通过 iframe 嵌入,避免诱导用户误操作

---

## 8. X-Content-Security-Policy
### 作用
- 旧版浏览器(如 IE)兼容的 CSP 头
- 用于**兜底防护相对路径覆盖攻击(RPO)**
- 增强对不支持标准 CSP 浏览器的兼容性防护

### 当前配置值
```
default-src 'self'
```

### 值含义
- 仅允许当前域加载资源
- 与标准 CSP 保持一致,实现兼容防护

---

# 三、整体安全效果总结
1. **XSS 攻击防护**:CSP + X-XSS-Protection 双重拦截
2. **点击劫持防护**:X-Frame-Options 限制 iframe 嵌套
3. **信息泄露防护**:Referrer-Policy 控制 Referer 泄露
4. **文件类型伪造防护**:X-Content-Type-Options 禁止 MIME 嗅探
5. **下载安全防护**:X-Download-Options 禁止自动打开
6. **跨域插件风险防护**:X-Permitted-Cross-Domain-Policies 禁止跨域策略
7. **旧浏览器兼容防护**:X-Content-Security-Policy 兜底 RPO 漏洞

---

# 四、验收结论
当前返回头已完整包含以下 8 项安全配置:
- Content-Security-Policy
- Referrer-Policy
- X-Content-Type-Options
- X-Download-Options
- X-Permitted-Cross-Domain-Policies
- X-XSS-Protection
- X-Frame-Options
- X-Content-Security-Policy