在我们的网站上,来自广告提供商的外部脚本(所有 Javascript)偶尔会将用户导航到某些恶意软件网站。
可以从广告提供商加载任何 JS 代码(例如,有时它会创建一个 iframe 来显示广告,有时广告会直接显示在主页中)。
我想知道如何安全地防止任何外部脚本触发顶级导航,无论脚本是否从 iframe 内执行。
当前的解决方案是在每个响应中添加 CSP sandbox 标头:
header( 'Content-Security-Policy: sandbox allow-downloads allow-forms allow-modals allow-pointer-lock allow-popups allow-popups-to-escape-sandbox allow-same-origin allow-scripts allow-storage-access-by-user-activation allow-top-navigation-by-user-activation allow-top-navigation-to-custom-protocols;' );
该策略是通过省略 sandbox allow-top-navigation
标题来防止顶级导航。
这是否是防止顶级导航的充分解决方案?有没有更好的方法来实现这个目标?
仅阻止顶级导航是不够的。
allow-scripts
会允许的。例如,第三个 JavaScript 包含:
window.location = 'https://example.com'