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 读。

相关推荐
凤山老林2 分钟前
27-Java final 关键字
java·开发语言
少许极端2 分钟前
算法奇妙屋(四十九)-贡献法
java·算法·leetcode·贡献法
卷毛的技术笔记4 分钟前
从零到一:深入浅出分布式锁原理与Spring Boot实战(Redis + ZooKeeper)
java·spring boot·redis·分布式·后端·面试·java-zookeeper
天空属于哈夫克37 分钟前
行为审计与全链路追踪:私域自动化执行的安全性设计
java·运维·微服务
skilllite作者8 分钟前
SkillLite 技术演进笔记:Workspace、沙箱与进化
java·开发语言·前端·笔记·安全·agentskills
Olivia051405149 分钟前
Voohu:以太网隔离变压器的耐压与局部放电测试方法及判定标准
网络·安全·信息与通信
DevilSeagull14 分钟前
Rust 结构体详解:从定义到实例化的指南
开发语言·算法·安全·rust
Chockmans17 分钟前
春秋云境CVE-2019-8933
安全·web安全·网络安全·网络攻击模型·安全威胁分析·春秋云境·cve-2019-8933
m0_7381207218 分钟前
渗透基础知识ctfshow——Web应用安全与防护(完结:第八章)
前端·python·sql·安全·web安全·网络安全
乐观勇敢坚强的老彭21 分钟前
C++信奥洛谷循环章节练习题
java·c++·算法