Fetch Metadata与跨站泄露(XS-Leaks)防护最佳实践概述XS-Leaks利用跨站行为与浏览器特性泄露信息。通过读取Fetch Metadata请求头并在服务器执行拒绝策略,可显著降低风险。服务器策略示例type Req = { headers: Record<string, string>; method: string; path: string }
function isDangerousCrossSite(req: Req): boolean {
const site = (req.headers['sec-fetch-site'] || '').toLowerCase()
const mode = (req.headers['sec-fetch-mode'] || '').toLowerCase()
const dest = (req.headers['sec-fetch-dest'] || '').toLowerCase()
// 拒绝跨站对敏感端点的导航或不简单请求
const sensitive = req.path.startsWith('/account') || req.path.startsWith('/admin')
const cross = site === 'cross-site'
const notSimple = mode !== 'cors' && mode !== 'navigate' && mode !== 'same-origin'
return sensitive && cross && (mode === 'navigate' || notSimple || dest === 'document')
}
function enforceFetchMetadata(req: Req): { allowed: boolean; status: number } {
if (isDangerousCrossSite(req)) return { allowed: false, status: 403 }
return { allowed: true, status: 200 }
}
结合COOP/COEP与CSPCross-Origin-Opener-Policy: same-origin
Cross-Origin-Embedder-Policy: require-corp
Content-Security-Policy: frame-ancestors 'none'; base-uri 'self'
运维要点对敏感接口启用Fetch Metadata策略与白名单例外与COOP/COEP、CSP协同,降低跨站泄露攻击面在日志中记录 `Sec-Fetch-*` 以审计跨站访问模式通过服务器策略与浏览器隔离策略的组合,可在复杂场景下实现可靠的XS-Leaks防护。

发表评论 取消回复