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

相关推荐
贫民窟的勇敢爷们4 小时前
SpringBoot整合AOP切面编程实战,实现日志统一记录+接口权限校验
java·spring boot·spring
AC赳赳老秦5 小时前
供应链专员提效:OpenClaw自动跟踪物流信息、更新库存数据,异常自动提醒
java·大数据·服务器·数据库·人工智能·自动化·openclaw
迈巴赫车主5 小时前
Java基础:list、set、map一遍过
java·开发语言
灵犀学长6 小时前
基于 Spring ThreadPoolTaskScheduler + CronTrigger 实现的动态定时任务调度系统
java·数据库·spring
无心水6 小时前
【Hermes:安全、权限与生产环境】40、运行 Hermes 前的生命线:安全审计清单与 11 个必须检查的配置项
人工智能·安全·mcp协议·openclaw·养龙虾·hermes·honcho
好家伙VCC7 小时前
【无标题】
java
小碗羊肉8 小时前
【JavaWeb | 第十一篇】文件上传(本地&阿里云OSS)
java·阿里云·servlet
吾疾唯君医8 小时前
Java SpringBoot集成积木报表实操记录
java·spring boot·spring·导出excel·积木报表·数据文件下载
Byron Loong8 小时前
【c++】为什么有了dll和.h,还需要包含lib
java·开发语言·c++
hexu_blog9 小时前
vue+java实现图片批量压缩
java·前端·vue.js