企业级Web系统安全纵深防御完整设计方案(防御XSS/CSRF/重放/篡改/凭证劫持)
企业级Web系统安全纵深防御完整设计方案(防御XSS/CSRF/重放/篡改/凭证劫持)
一、方案整体概述
1. 设计目标
彻底解决 Web 系统最核心四大安全风险:
XSS 跨站脚本攻击(存储型、反射型、DOM型)
CSRF 跨站请求伪造(全站彻底免疫)
请求重放攻击、中间人篡改、抓包伪造
Token 窃取、会话劫持、长期凭证泄露
实现:无架构级安全漏洞、纵深防御、多层兜底、高危业务零风险,满足企业生产环境、等保规范安全标准。
2. 核心架构思想
鉴权分层:短期业务令牌 + 长期刷新令牌分离,风险隔离
存储分层:业务令牌内存存储防XSS窃取,刷新令牌HttpOnly Cookie防泄露、防CSRF
传输加密:AES+RSA混合加密 + 时间戳防重放
页面防御:CSP强制策略 + 全局输入输出转义根治XSS
业务兜底:高危操作二次真人校验,彻底杜绝业务损失
二、双Token认证体系整体设计(核心防CSRF、防XSS劫持)
1. Token结构与时效设计
| 令牌类型 | 作用 | 过期时间 | 存储位置 |
|---|---|---|---|
| AccessToken(业务令牌) | 所有业务接口鉴权,携带用户ID、权限、设备指纹 | 10~30分钟(短时效) | 前端运行内存变量,不存Cookie、不存LocalStorage |
| RefreshToken(刷新令牌) | 仅用于无感刷新AccessToken,不参与任何业务鉴权 | 1~7天(长时效) | HttpOnly + Secure + SameSite=Strict Cookie |
2. 关键安全设计详解
(1)AccessToken 内存存储核心价值
完全免疫XSS窃取:恶意JS只能读取Storage、Cookie,无法读取页面内存JS变量
完全免疫CSRF攻击:
业务鉴权必须前端手动在 Header 携带:Authorization: Bearer {token}
跨域请求浏览器不会自动携带内存Token,传统CSRF彻底失效
- 页面刷新/标签关闭/路由重载自动销毁,泄露面极小
(2)RefreshToken Cookie 完整安全属性(强制落地)
服务端下发 Cookie 完整配置:
refreshToken=xxx; HttpOnly; Secure; SameSite=Strict; Path=/api/auth/refresh; Max-Age=604800
HttpOnly:禁止JS读取,XSS无法窃取刷新凭证
Secure:仅HTTPS环境传输,杜绝HTTP明文劫持
SameSite=Strict:所有第三方跨站请求一律不带Cookie,刷新接口无CSRF风险
Path限制:仅刷新接口可读取该Cookie,极大缩小攻击面
(3)JWT载荷加固规则
所有JWT强制包含字段:
sub:用户唯一ID
exp:过期时间
nbf:生效时间(禁止超前使用)
fingerprint:设备指纹(UA+设备特征哈希),Token绑定设备,跨设备窃取无效
3. RefreshToken 服务端管控机制(关键兜底)
服务端维护RefreshToken 黑名单表
触发场景立即拉黑失效:
用户主动登出
修改密码、绑定信息变更
异地登录、设备下线
账号冻结/注销
黑名单数据定时清理过期数据,保证性能
4. 无感刷新逻辑
AccessToken 过期前/过期后,前端自动调用刷新接口
浏览器自动携带 RefreshToken Cookie
服务端校验:Cookie合法 + 未拉黑 + 设备指纹一致,下发新AccessToken
全程无感知,用户无需重新登录
三、全站接口 AES+RSA 混合加密 + 时间戳防重放方案
1. 加密架构设计(行业标准安全组合)
RSA非对称加密:加密随机生成的AES密钥,解决密钥传输安全
AES对称加密:加密所有业务请求/响应报文,高效防篡改、防窃听
时间戳+设备指纹:杜绝重放攻击、数据包复用
2. 完整请求加密流程
客户端生成一次性随机AES密钥(每次请求不同)
使用服务端公钥RSA加密AES密钥,放入请求头
使用AES密钥加密全部业务请求参数
请求携带:加密报文 + RSA加密后的AES密钥 +服务端时间戳+ 设备指纹
服务端私钥解密得到AES密钥 → 解密报文
校验时间戳、设备指纹、请求合法性
3. 时间戳防重放强制规则
以服务端时间为准,拒绝前端本地时间
有效时间窗口:±60秒
同一设备指纹+时间戳禁止重复请求,拦截批量重放
超时、篡改、重复请求直接拦截并记录安全日志
4. 密钥运维策略
RSA公私钥定期轮换(月度更新)
AES密钥单次请求有效,不复用
四、高危业务二次校验兜底方案
1. 强制二次校验接口列表
所有涉及资金、账号权限、核心数据的接口必须二次验证:
密码修改、手机号/邮箱换绑
提现、转账、支付确认
账号注销、权限变更、设备解绑
核心隐私数据导出
2. 校验规则
验证方式:短信验证码 / 邮箱验证码 / 人脸识别(三选一,可配置)
验证码有效期:5分钟
单次有效,验证后立即失效
接口限流:单账号1分钟最多1次验证码请求,防轰炸
核心价值:即使前面所有防御被极端绕过,攻击者也无法完成高危业务操作,彻底杜绝业务损失。
五、全站XSS终极防御体系(根治所有类型XSS)
1. 前端代码规范(杜绝DOM型XSS)
禁止使用:innerHTML、document.write、eval、动态字符串执行函数
强制使用:textContent、createElement 原生安全API,自动转义特殊字符
2. 后端输入输出双防护
输入层:白名单校验(禁止黑名单),严格限制输入格式、长度、字符范围
输出层:分上下文精准转义
HTML上下文:转义 & < > " ’
JS上下文:转义 \ " ’ < >
URL上下文:禁止 javascript:/data: 危险协议
富文本场景:统一使用 DOMPurify 安全过滤库,禁止手动过滤
3. 浏览器安全响应头强制开启
全站统一返回HTTP头:
X-XSS-Protection: 1; mode=block:浏览器内置XSS拦截Content-Security-Policy严格策略:禁止内联JS、禁止eval、仅允许自有域名和可信CDN资源
4. 文件上传专项防护(防存储型XSS)
校验文件后缀、文件MIME类型、文件头部真实二进制
禁止上传 html、js、svg、xml 等可执行脚本文件
上传文件独立域名存储、禁止脚本执行权限
六、辅助安全加固策略(全局兜底)
1. 接口限流与风控
全局接口限流:单IP、单账号单位时间请求上限
异常请求(高频、非法报文、篡改参数)自动拉黑、日志告警
2. 跨域辅助校验
服务端校验 Origin / Referer 请求头,仅放行本域名合法请求,作为CSRF辅助兜底。
3. 安全日志与审计
所有加密失败、Token非法、时间戳过期、二次校验失败、异常登录全部记录日志,支持安全溯源、攻防审计。
七、方案攻防结论(完整风险闭环证明)
1. 本方案如何彻底消灭 CSRF
业务接口凭证为内存AccessToken,浏览器不会自动携带,无任何伪造可能
刷新接口凭证为 Strict 模式Cookie,第三方跨域请求不带Cookie
加密+时间戳杜绝伪造合法请求报文
结论:全站 0 CSRF 风险
2. 本方案如何彻底防御 XSS
AccessToken 内存存储,XSS无法窃取核心业务凭证
RefreshToken HttpOnly,JS无法读取刷新凭证
CSP + 输入输出转义 阻止恶意脚本执行
短时Token + 设备绑定,即使极端泄露也快速失效、无法复用
结论:XSS 无法盗号、无法劫持会话、无法操控用户账号
3. 防御其他攻击
防中间人窃听篡改:AES+RSA全站加密
防重放攻击:时间戳+单次请求校验
防账号被盗核心操作:高危接口二次真人校验
八、最终落地极简清单(可直接交付开发)
AccessToken 内存存储、短时效10-30min,Header手动携带
RefreshToken 长时效1-7天,Cookie配置:HttpOnly+Secure+SameSite=Strict+Path限制
服务端实现RefreshToken黑名单、设备指纹绑定JWT
全站AES+RSA混合加密+服务端时间戳防重放
高危业务短信/邮箱/人脸二次校验
全站CSP、X-XSS-Protection响应头、前后端XSS过滤规范
接口限流、跨域校验、安全日志审计
(注:部分内容可能由 AI 生成)
