差不多是3、4年前的事情,不算是经典的前端安全问题,不过实际的界面效果就跟被攻击了一样,算是非常规的前端安全问题

看起来诡异的现象

前同事,前端大佬F君,在群里跟我们分享一个问题,就是他们的门户网站,嵌入了合作方的广告iframe后,界面打开就直接滚动到这广告的位置了

类似于上图,界面打开后,在无任何手动操作的情况下,直接滚动到了广告的位置

肯定是这个广告iframe搞的鬼,F君分析他们的iframe源码,想具体找到他们是使用的什么代码去操作的这个,但苦于他们的源码内容比较多且压缩过,一时找不到是哪块代码的影响

问题定位

首先确定这个iframe是与主站跨域的,这样的话iframe就无法拿到主站的window信息去操作滚动等事项,而且主站也没有对外暴露接收postMessage的方法

排除滚动的原因,那就只有一种可能了,就是iframe内的元素获取焦点,直接把界面给“定位”下来了

基于这个猜测,我跟F君说,估计是这个iframe里面有隐藏的input,通过input的获取焦点事件,把界面滚动下来了

F君基于这个思路又找了一会,发现果然是这个原因!他找到了一个隐藏的很深的input,异步将这个input获取焦点,就能实现他们的目的

之所以说隐藏的很深,并不是dom节点隐藏的深,是因为他们在广告逻辑的js隐藏角落里,动态创建了一个input,然后focus,然后将该input销毁,几乎不留任何痕迹

类似于下面的代码,这个是我看了他们的源码之后梳理出来的界面定位主逻辑

<body>我是广告内容<script>/*** 个人模拟的广告iframe代码,被外层主界面嵌套后,会把主界面拉到当前的位置* 与主界面跨域的话也能实现效果* 需要加异步,不加异步的话不行*/setTimeout(() => {let myInput = document.createElement('input');myInput.style.opacity = 0document.body.appendChild(myInput);myInput.focus();document.body.removeChild(myInput)}, 100)</script>
</body>

如何防御

既然找到了问题,就想如何防御这个效果的出现,我们两个基于技术的角度想了一会,发现从技术角度上没法去防御这个问题,因为iframe是跨域的,主站也没有去写代码影响iframe的内容

于是乎,F君找到了公司商务,把事情的原委说了一下,让他们通过商务途径解决了这个问题

后记

我在工作中,也经常与合作方打交道,因为有利益共赢的关系,他们也会将内容、效率、安全、合规等工作内容做的很好,甚至很多方面比我们更专业

基于经验,我们心里多少会把他们认为自己人,从而放松一些

谁能想到,他们会有一些犯贱的动作,打着擦边球,做着损人利己的事情

前端安全,最重要是在防人心,防人之心不可无

现在换个角度一想,input获取焦点实现定位,这个技术思路获取可以在项目轻松实现一些正规的业务

前端安全 - 信任的iframe也有隐患相关推荐

  1. 微前端实际应用:iframe、qiankun

    目录 1.iframe 1-1 iframe基本理解 1-2 无界方案 1-3 使用无界 1-4 实现细节 1-5 无界微前端框架总结 2.qiankun 2-1 微前端知识温故 2-2 qianku ...

  2. 前端页面中的iframe框架的实践

    说在前面的话,iframe是可以做很多事情的. 例如: a>通过iframe实现跨域; b>使用iframe解决IE6下select遮挡不住的问题 c>通过iframe解决Ajax的 ...

  3. 【树莓派-网络监控(5)前端搭建】基于iframe标签,集成监控实时画面与遥控功能,完成网络监控的搭建与调试

    前期内容提要: [树莓派-网络监控(1)分析准备]基于树莓派搭建可视化可远程遥控网络监控--工程分析及前期准备 [树莓派-网络监控(2)画面传输]基于mjpg-stream实现监控画面的传输 [树莓派 ...

  4. 前端iframe 能指定本地网页吗_微前端的技术拆分方式

    路由分发式 通过HTTP服务器的反向代理功能,将请求路由到对应的应用上 特点 采用的最多.最容易的"微前端"方案 并非一个整体,每当用户从A应用转换到B应用的时候,往往需要刷新一下 ...

  5. 基于 iframe 的全新微前端方案

    作者:damyxu,腾讯 PCG 前端开发工程师 iframe是一个天然的微前端方案,但受限于跨域的严格限制而无法很好的应用,本文介绍一种基于 iframe 的全新微前端方案,继承iframe的优点, ...

  6. 什么不用 iframe 做微前端

    如果不考虑体验问题,iframe 几乎是最完美的微前端解决方案了. iframe 最大的特性就是提供了浏览器原生的硬隔离方案,不论是样式隔离.js 隔离这类问题统统都能被完美解决.但他的最大问题也在于 ...

  7. 为什么舍弃Iframe探究新的微前端技术?

    为什么不用 iframe,这几乎是所有微前端方案第一个会被 challenge 的问题.但是大部分微前端方案又不约而同放弃了 iframe 方案,自然是有原因的,并不是为了 "炫技" ...

  8. iframe 在 SAP 三款产品中的三个应用场景

    这是 Jerry 2021 年的第 73 篇文章,也是汪子熙公众号总共第 350 篇原创文章. iframe 是一项历史悠久的前端技术,能够将另一个 HTML 页面嵌入到当前的宿主页面.每个通过 if ...

  9. 云客Drupal源码分析之系统AJAX(二):前端原理

    前端概述: drupal AJAX API前端系统主要是指核心库:core/drupal.ajax,下文简称AJAX库,前端AJAX行为均由该库完成,她主要依赖以下几个重要的库: jquery库cor ...

最新文章

  1. python2.7环境下“No module named matplotlib.pyplot”的解决办法
  2. linux fedora yum安装docker-ce
  3. $()是有两个参数,第一个是选择器,第二个是作用域
  4. 《犯罪心理学》读书笔记(part6)--犯罪心理的主观差异(上)
  5. [css] CSS中的calc()有什么作用?
  6. 第六十六期:软件架构之道的一次感悟
  7. 当代年轻人的“快乐秘籍”—— Z时代营销攻略
  8. linux c绑定cpu_Linux内核路径优化之多核心平台TCP优化
  9. 1000道Python题库系列分享18(11道选择题)
  10. 理解Java - JDK动态代理原理
  11. paip.win32的internet扩展已停止工作解决大法
  12. python抽奖教程_python实现抽奖小程序
  13. 给罗永浩和王自如打个分
  14. Codeforces Round #469 (Div. 2) F. Curfew
  15. 如何给PDF文件加密和解密?
  16. 你认为微软 Win12 可以在哪些方面改进?
  17. python工具类-sql操作封装
  18. js 已知角度和斜边,求直角边
  19. 新家急需入住怎么快速除甲醛,屋里去甲醛最快的方法
  20. 图形学-二维图形的裁剪1.Cohen 2.Liang

热门文章

  1. xw总结4:jmmntsj
  2. 【你又有一个好消息】荣获2022年国民技术MCURT-Thread设计大赛获奖榜单头名
  3. 通过无人机获取影像或三维模型辅助小区域大比例尺地形图的想法和问题
  4. Atom - 介绍和使用方法(好用的文本编辑器,代码提示高亮、Markdown)
  5. du 查看文件大小命令
  6. Java面试题中高级,nasdocker有啥好玩的
  7. 什么时候可以找回民族的自尊,不再崇洋媚外?--从华晨老总骏捷发布会的一番话说起...
  8. hdoj 4544 贪心
  9. SubString 函数总结
  10. 推荐系统中特征交叉模型之——DeepWide/DeepFM/NFM