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

相关推荐
好好沉淀1 分钟前
@ExcelIgnoreUnannotated 和 @AutoMapper 详解
java
愚公移码22 分钟前
蓝凌EKP18产品:流程虚拟机(PVM)
java·开发语言·前端
羽翼安全30 分钟前
企业内网终端可视化风控方案解析,电脑屏幕防泄露系统保障数据资产安全
安全
驰骋工作流30 分钟前
流程引擎BPM设计之:流程消息
java·工作流引擎·bpm·jflow·ccflow
dogstarhuang36 分钟前
从 0 到 1 搭建可收费的 API 开放平台(实战)
java·架构·api
VortMall1 小时前
『平台去经营化』平台治理能力全新重构|VortMall微服务商城系统v1.3.10
java·大数据·微服务·商城系统·开源商城·vortmall·去经营化
吴声子夜歌1 小时前
Redis 3.x——集群故障转移
java·数据库·redis·集群
Java面试题总结2 小时前
mybatis插件
java·tomcat·mybatis
数据知道2 小时前
邮件安全实战:SPF/DKIM/DMARC 配置与钓鱼绕过
网络·安全·web安全·网络安全·邮件安全
橘子海全栈攻城狮2 小时前
【最新源码】基于SpringBoot + Vue的超市管理系统的设计与实现D002
java·开发语言·vue.js·spring boot·后端·spring