【问题标题】:Hidden HTML Iframe隐藏的 HTML iframe
【发布时间】:2017-06-04 15:43:29
【问题描述】:

我有一个带有 iframe 的页面,为了简化这种情况,我们假设它看起来像这样:

<!DOCTYPE html>
<html>
  <head>
    <title></title>
  </head>
  <body>
    <iframe src="http://example.com"></iframe>
  </body>
</html>

假设该页面在 Internet 上并且您输入了它。它在 iframe 内加载 http://example.com

我想更改此设置以使您看不到http://example.com,因为您只能使用我的页面打开此地址,而不仅仅是将http://example.com 放在网络浏览器的第二个选项卡中。

我在页面源代码中看到http://example.com(右键单击-> 页面源代码) 我还在开发人员工具的网络中看到浏览器向http://example.com 发出请求。所以我可以复制这个地址并在新的浏览器标签中打开它。

我该怎么做才能让你不知道地址:http://example.com

【问题讨论】:

  • 这是不可能的......
  • 这是不可能的,因为 A:你无法隐藏 iframe src,即使有一些 javascript 或 Ajax 请求,B:你无法隐藏通过网络并在每个 webbrowser 的开发人员工具中可见的请求?
  • 一次性使用 URL 是解决方案...或者让页面检测到它在 iframe 中,如果没有重定向...
  • 不幸的是,iframe 中的页面是 3rdparty 产品,它不会检查它是否在 iframe 内......我必须保护它,以免互联网用户在没有我的应用程序的情况下无法打开它。这个第 3 方产品是另一个具有自己的 http 地址 (example.com) 的网络应用程序,所以我必须像 @Al Katawazi 所说的那样做一些事情。另一方面,iframe 内的页面不是静态的,它是交互式的 - 所以它是一个可以填写数据(姓名、姓氏等)的表单。然后在框架内你可以提交它。如果它不是交互式的,我不会使用 iframe 并在服务器端创建它。
  • 如果是交互式的……可以做什么?

标签: javascript html security iframe


【解决方案1】:

我能想到的唯一方法是,如果您在代码中筛选页面并自己提供 html。所以它看起来像这样:

  1. 有人向您的页面发出请求
  2. 在您在后端代码中提供页面之前,您先获取 html example.com
  3. 提供来自后端请求的 html

这可能没有正确格式化,因为您缺少 css 或因为缺少 js 而失去功能,但您只需要确保包含这些内容。

【讨论】:

  • 那么解决方案中不会有任何iframe?网络流量也不会对example.com有任何请求?
  • @michealAtmi 如果您能够查看网络日志...这个答案说要从服务器上抓取它并将其发送下来...。不要让客户端这样做。
  • 我想保护它免受互联网用户的侵害,在服务器端它可以在一些日志中。据我理解,页面应该在服务器端呈现并附加到响应中......好吧我使用 Angular/React + nodejs 来渲染页面,所以也许这是可能的。
  • 不幸的是,iframe 中的页面是 3rdparty 产品,它不会检查它是否在 ifame 内......据我所知,伙计们可以在服务器端呈现最终页面的某些部分(使用甚至许多不同的 http 地址的部分)并将其返回给浏览器,互联网用户将不知道最终页面部分的地址是什么。但是如果它是表单应用程序怎么办 - 所以你在 iframe 中填写一个表单,它不是静态的,它是交互式的......那么没有 iframe 是否可以做到这一点?
【解决方案2】:

有一个 header - X-Frame-Options 可以让你在 iframe 中阻止打开页面,但这种方式我认为是不可能的。

【讨论】:

    【解决方案3】:

    IFrame 是客户端。

    这意味着浏览器要呈现 IFrame,它必须对客户端网络浏览器可见。 隐藏它的唯一方法是开发一个网络代理。

    <!DOCTYPE html>
    <html>
      <head>
        <title></title>
      </head>
      <body>
        <iframe src="grab_secret_site.php"></iframe>
      </body>
    </html>
    

    这里,grab_secret_site.php 中的代码将向http://example.com 发出 HTTP 请求以获取 HTML。 An example here。但是,请记住,除非您重写它们,否则任何资源都不会加载。

    例如

    <img src=icon.jpg />
    

    将指向您网站上的 icon.jpg,而不是 example.com

    如果您不希望在没有父框架的情况下加载页面,您可以在外部页面中创建一个会话变量(例如 PHP 会话),然后在 IFrame 中对其进行检查。如果不存在,则将用户重定向回外部页面。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-04-05
      • 1970-01-01
      • 2011-08-05
      • 1970-01-01
      • 1970-01-01
      • 2012-09-06
      • 2016-12-13
      相关资源
      最近更新 更多