如何保护在其他地方使用的第三方iframe

时间:2018-01-22 04:22:56

标签: html django security iframe business-logic

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

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

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

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

2 个答案:

答案 0 :(得分:1)

如果X公司提供的服务没有经过身份验证(任何人都可以在一个框架中下载),那么他们最终会遇到一个问题,即您无法真正修复代码。即使您隐藏了实际的iframe网址,它仍然适用于拥有该链接的任何人。但你是对的,至少不是所有的访问者都会拥有它,这可能已经足够好了,如果你愿意,这是一种可以接受的风险。

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

编程问题是该解决方案的安全性。您需要注意的是,虽然这会隐藏用户的iframe网址,但该网址仍然有效且可供所有人使用,这是公司X服务的问题。您还需要在反向代理服务器上进行身份验证,否则新的iframe网址可以像原始网址一样进行复制。

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

答案 1 :(得分:0)

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

请参考这个......

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

它用于禁用Iframe(服务器除外)..