如何在iframe中拒绝你的网站对第三方网站的访问

本文概述

  • 拒绝所有人从iframe进行访问
  • 拒绝其他网站的访问
  • 这种方法有多可靠
要拒绝来自iframe中文档的访问, 我们需要使用meta标记修改文档的X-Frame-Options, 并(或)使用Javascript来实现惊人的效果。如果你尝试将YouTube的网站嵌入到iframe中, 则YouTube之类的网站将禁止其从iframe中进行访问, 即:
< iframe width="1000px" height="700px" src="https://www.youtube.com" > < /iframe>

你会在控制台中找到错误消息:
错误:拒绝在框架中显示” https://www.youtube.com/” , 因为它将” X-Frame-Options” 设置为” SAMEORIGIN” 。
拒绝所有人从iframe进行访问以下标记将阻止网站独立于请求进行访问。
< meta http-equiv="X-Frame-Options" content="deny">

拒绝值将导致该页面无法显示在框架中, 无论尝试这样做的站点(包括你的站点)如何。
拒绝其他网站的访问以下标记将阻止网站独立于请求进行访问。
< meta http-equiv="X-Frame-Options" content="sameorigin">

sameorigin值将导致页面无法显示在你的其他域的框架中。你仍然可以将自己的页面嵌入自己网域中的iframe中。
这种方法有多可靠如果你真的对自己问(不阅读本段), 那么你提出了一个很好的问题, 确实X-Frame-Options对Clickjacking攻击很敏感。
点击劫持或点击劫持是一种恶意技术, 当他们单击看似无害的网站时, 它们会诱骗Internet用户泄露机密信息或控制你的计算机。你可以在此处阅读有关此技术的更多信息。
你可以增加对网站的保护, 而这并不意味着要在实施Framekiller的iframe中加载该网站。 Framekillers是使用JavaScript实施的, 该JavaScript会验证当前窗口是否是主窗口, 你可以在要阻止iframe的网页中使用以下以JS编写的代码段作为简单的Framekiller。
if (top.location != self.location) {top.location = self.location.href; }

此解决方案有效, 但是仍然不可靠。以下情况可能会使上面的脚本无用:
  • 用户代理不支持JavaScript。
  • 用户代理支持JavaScript, 但是用户已关闭支持。
  • 用户代理的JavaScript支持存在缺陷或部分实现。
最后, 建议你在不打算插入框架的页面上使用X-Frame-Options并也使用脚本。
【如何在iframe中拒绝你的网站对第三方网站的访问】玩得开心 !

    推荐阅读