【问题标题】:How to Protect third party iframe being used elsewhere如何保护在其他地方使用的第三方 iframe
【发布时间】:2018-01-22 16:00:59
【问题描述】:

我正在为我的应用程序(基于 Django)的一部分使用第三方(X 公司)服务,该服务在安全登录之后。 X 中的内容以 iframe 的形式提供,该 iframe 只是嵌入在我的一个页面中。

我花了很多时间在 X 的应用程序中构建自定义内容(它是一个自定义的交互式地质工具),而且我对 X 的订阅也很昂贵。我想防止我的一位用户与其他同事甚至其他公司的用户共享 iframe 链接,并且无需登录我的应用即可简单地使用 X 中的内容。

很遗憾,X 无法通过 IP 或任何其他类型的链接安全来限制 iframe 内容。我知道,听起来很疯狂,但现在就是这样。

构建我自己的安全解决方案的最佳方式是什么?有没有办法使用另一台服务器作为中介,这样当客户端打开页面时,我的实时服务器会点击从 X 获取内容的中介服务器? 然后,我是唯一一个在我的中间服务器上接受来自我的实时服务器的请求的人。

【问题讨论】:

    标签: html django security iframe business-logic


    【解决方案1】:

    如果 X 公司在未经身份验证的情况下提供其服务(任何人都可以在框架中下载它),那么这对他们来说就是一个问题,您将无法在您的代码中真正解决这个问题。即使您隐藏了实际的 iframe url,它仍然适用于拥有该链接的任何人。但你是对的,至少不是所有的访问者都会拥有它,这可能已经足够了,如果你愿意,这是可以接受的风险。

    您将服务器放在中间的想法,而您的应用程序只访问中间服务器实际上可以工作。这称为反向代理,任何 Web 服务器软件(Apache、nginx、IIS 等)都可以在没有太多设置的情况下完成。所以不需要开发,因此设置它不是编程问题。

    什么编程问题是这个解决方案的安全性。您需要注意,虽然这会对您的用户隐藏 iframe url,但该 url 仍然有效并且适用于任何人,这是 X 公司服务的问题。此外,您还需要在反向代理服务器上进行身份验证,否则新的 iframe url 可以像原来的一样被复制。

    另外请注意,反向代理包含大量嵌入式资源和 javascript 的复杂网站会有其陷阱。根据实际内容,有时可能会向您的用户披露真实来源。

    【讨论】:

      【解决方案2】:

      您可以将响应头 'X-Frame-Options' 设置为 'sameorigin'..

      请参考这个...

      https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options

      它用于禁用 iframe(您的服务器除外)..

      【讨论】:

      • 但这应该在X公司的服务上设置,@acandroid显然不能这样做。
      猜你喜欢
      • 1970-01-01
      • 2020-01-11
      • 2011-09-27
      • 1970-01-01
      • 2017-12-24
      • 1970-01-01
      • 1970-01-01
      • 2011-09-18
      • 1970-01-01
      相关资源
      最近更新 更多