个性化阅读
专注于IT技术分析

如何在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并也使用脚本。

玩得开心 !

赞(0)
未经允许不得转载:srcmini » 如何在iframe中拒绝你的网站对第三方网站的访问

评论 抢沙发

评论前必须登录!