如何用CSP仅阻止HTML meta标签触发的重定向?
解决方案
场景回顾
XSS注入后插入了恶意<meta http-equiv="refresh">标签,会将页面重定向到恶意域名。现有两种CSP配置存在矛盾:
- 仅用
sandbox能阻止重定向,但会拒绝同源合法脚本/assets/app.js - 用
sandbox allow-scripts allow-same-origin允许脚本,但又会放开重定向限制
正确CSP配置
使用以下CSP规则即可同时满足两个需求:
Content-Security-Policy: default-src 'self'; script-src 'self'; object-src 'none'; base-uri 'none'; navigate-to 'self';
规则说明
script-src 'self':明确允许加载并执行同源域名下的脚本,确保/assets/app.js这类合法资源正常加载navigate-to 'self':限制所有导航行为(包括<meta http-equiv="refresh">触发的重定向、location.href跳转等)只能指向同源地址,直接阻断到外部恶意域名的跳转default-src 'self'、object-src 'none'、base-uri 'none':维持基础安全限制,避免其他潜在注入风险
内容的提问来源于stack exchange,提问作者Oliver Hader
相关产品推荐
相关产品推荐

