Web缓存与安全(Cache Poisoning防护与边缘策略)最佳实践概述缓存中毒常源于不一致的键、歧义的参数与不当的头部参与。通过规范化与键隔离可显著降低风险。基线URL参数与路径规范化区分匿名与认证缓存键正确设置 `Cache-Control`、`Vary` 与 `ETag`边缘分层与来源一致性校验规范化实现function canonicalQuery(params: URLSearchParams, allow: string[]): string { const keys = allow.slice().sort() const parts: string[] = [] for (const k of keys) { const v = params.get(k) if (v !== null) parts.push(`${k}=${encodeURIComponent(v)}`) } return parts.join('&') } function buildCacheKey(url: string, headers: Record<string, string>, auth: boolean): string { const u = new URL(url) const q = canonicalQuery(u.searchParams, ['q', 'page', 'lang']) const vary = [`accept:${headers['accept'] || ''}`, `lang:${q.includes('lang=') ? '1' : '0'}`].join('|') const segment = auth ? 'auth' : 'anon' return `${segment}:${u.pathname}?${q}|${vary}` } 响应头配置Cache-Control: public, max-age=300 Vary: Accept, Accept-Language ETag: W/"<hash>" 边缘策略使用 `Surrogate-Key` 对对象分组,精准失效在CDN执行路径与参数白名单、拒绝未规范参数对认证流量禁用共享缓存或启用键前缀隔离监控与审计监控命中率、变体数量与异常键爆炸审计来自异常头部与参数的命中分布对低命中高变体的端点进行策略收敛通过规范化与键隔离,结合边缘策略,可在不牺牲性能的前提下显著降低缓存中毒风险。

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论
立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部
2.126915s