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

相关推荐
zhouping@2 小时前
Java学习笔记day04
java·笔记·学习
怒放de生命20102 小时前
IDEA 2025 最新版jrebel 破解
java·ide·intellij-idea
Guheyunyi2 小时前
电气安全管理系统有哪些技术升级
大数据·人工智能·安全·架构·能源
科技块儿2 小时前
社交媒体账号安全如何通过IP查询工具检测异常登录?
服务器·网络·数据库·tcp/ip·安全
Qzkj6662 小时前
高效·符合法规·闭环管理——知影API风险监测系统政务行业API安全解决方案
大数据·安全·政务
shandongtianhe2 小时前
隧道能见度检测器:守护隧道安全的“火眼金睛”
安全
MegaDataFlowers2 小时前
认识复杂度和简单排序算法
java·算法·排序算法
StackNoOverflow3 小时前
Maven 核心知识整理
java·maven
ekkcole3 小时前
easyexcel2.2.10版本对本地文件指定行或多行样式处理
java·easyexcel