java项目部署上线,安全扫描问题的解决方案

仅为本人记录

危险程度 漏洞名称
检测到目标X-Content-Type-Options响应头缺失
检测到目标X-Content-Type-Options响应头缺失
检测到目标URL存在客户端(JavaScript)Cookie引用
检测到目标源码中可能存在用户名或者密码信息泄露
检测到目标Content-Security-Policy响应头缺失
检测到目标Strict-Transport-Security响应头缺失
检测到目标Referrer-Policy响应头缺失
检测到目标X-Permitted-Cross-Domain-Policies响应头缺失
检测到目标X-Download-Options响应头缺失
点击劫持:X-Frame-Options未配置

解决方案:

修改项目中:SecurityConfig

添加一下代码

java 复制代码
           // ===== 安全响应头配置(解决扫描器告警) =====
            .headers(headers ->

                    // 解决X-Content-Type-Options 缺失
                    headers.contentTypeOptions().and()
                     // 解决X-XSS-Protection 缺失
                    .xssProtection(xss -> xss.block(true))
                    // X-Frame-Options: SAMEORIGIN(防点击劫持)
                    .frameOptions(frame -> frame.sameOrigin())
                    // 解决Content-Security-Policy 缺失
                    .contentSecurityPolicy(csp -> csp
                        .policyDirectives("default-src 'self'; " +
                                "script-src 'self'; " +
                                "style-src 'self' 'unsafe-inline'; " +
                                "img-src 'self' data:; " +
                                "font-src 'self' data:; " +
                                "object-src 'none'; " +
                                "frame-ancestors 'self'; " +
                                "base-uri 'self'; " +
                                "form-action 'self'")
                    )

                // 解决Referrer-Policy 缺失
                .referrerPolicy(referrer -> referrer
                        .policy(org.springframework.security.web.header.writers.ReferrerPolicyHeaderWriter.ReferrerPolicy.STRICT_ORIGIN_WHEN_CROSS_ORIGIN)
                )
                // 解决X-Permitted-Cross-Domain-Policies 缺失
                .addHeaderWriter((request, response) -> {
                    if (!response.containsHeader("X-Permitted-Cross-Domain-Policies")) {
                        response.setHeader("X-Permitted-Cross-Domain-Policies", "none");
                    }
                })
                // 解决 X-Download-Options 缺失
                .addHeaderWriter((request, response) -> {
                    if (!response.containsHeader("X-Download-Options")) {
                        response.setHeader("X-Download-Options", "noopen");
                    }
                })

            )

二.检测到目标源码中可能存在用户名或者密码信息泄露

我的配置都发放在nacos上的,

但是 Nacos 自身的账号密码 可能也存在这种情况

直接修改yml

yml 复制代码
spring:
  cloud:
    nacos:
      discovery:
        service: ${spring.application.name}-${spring.profiles.active}
        server-addr: 123.444.555.66:8848
        namespace: xxxx
        group: DEFAULT_GROUP
      config:
        server-addr: 123.444.555.66:8848
        username: ${NACOS_USER}
        password:  ${NACOS_PASS:}
        namespace: xxxxx
        file-extension: properties
        group: DEFAULT_GROUP

然后我后端部署用的docker compose

修改为:

yml 复制代码
services:
  demo:
    image: demo:lasted
    container_name: demo
    build: . #表示以当前目录下的Dockerfile开始构建镜像
    ports:
     - "8074:8074"
    environment:
        NACOS_USER: nacos
        NACOS_PASS: 123456

关键是:真实密码不再出现在 yml 里,而是从环境变量 NACOS_USER、NACOS_PASS 读。

相关推荐
用户298698530142 分钟前
Java 进阶:基于模板生成 Word 文档的实践思路
java·后端
涛声依旧-底层原理研究所4 分钟前
响应式编程:map与flatMap实战解析
java
无心水1 小时前
【OpenClaw:赚钱】案例19、内容产量5倍、广告收入翻4倍:播客转多平台内容矩阵全自动化实战(OpenAI Whisper + Claude)
java·人工智能·python·ai编程·openclaw·养龙虾·java.time
云烟成雨TD1 小时前
Spring AI 1.x 系列【42】MCP 服务端 Spring Boot 启动器
java·人工智能·spring
云烟成雨TD1 小时前
Spring AI 1.x 系列【38】模型上下文协议(MCP)
java·人工智能·spring
Alson_Code1 小时前
Spring AI-1.1.0
java·人工智能·后端·spring·ai编程
ANnianStriver1 小时前
PetLumina 08 — 通知系统与搜索功能修复(广播机制 + 已读状态 + 参数对齐)
java·ai·ai编程·广播机制
ggaofeng1 小时前
试用zeroclaw
java·开发语言
就叫_这个吧1 小时前
servlet整合tomcat项目启动报错解决,org.apache.tomcat.util.descriptor.web.WebXml.setVersion
java·servlet·tomcat·apache
Wenzar_1 小时前
用 JAX 构建可微分光子神经网络仿真器
java·人工智能·深度学习·神经网络