【electron/cef】-iframe内嵌第三方直接改动顶层窗口href导致的偷梁换柱

项目场景:

客户端使用cef框架,在自己内部页面中用iframe嵌入第三方游戏广告。


问题描述

在使用iframe嵌入第三方页面的同时不开启沙盒隔离,第三方页面内的操作让主窗口location.href改变,导致整个客户端页面都展示成第三方页面。使用沙盒又会让第三方链接页面展示异常~


解决方案:

方案1

使用cef框架,在前端层面无法拦截第三方内嵌直接修改window.top.location.href=“xxxxx”。最好的解决方案是和第三方技术人员拉扯一下,让对方不要直接改动顶层窗口的href。

方案2
  • 改成Electron框架,在 Electron 中,可以监听 will-navigate 事件,并决定是否阻止即将发生的导航:
const createWindow = () => {
  const mainWindow = new BrowserWindow({
    width: 800,
    height: 600,
    webPreferences: {
      partition: '',
      preload: path.join(__dirname, 'preload.js'),
      nodeIntegration: false, // 禁用 Node.js 集成
      contextIsolation: true  // 开启上下文隔离
    }
  })
  mainWindow.loadFile('index.html')
  mainWindow.webContents.on('will-navigate', (event, url) => {
    // 根据实际需要检查 URL
    if (url !== 'index.html') {
      event.preventDefault();
    }
  });
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值