仅为本人记录
| 危险程度 | 漏洞名称 |
|---|---|
| 低 | 检测到目标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 读。