我正在使用第三方(公司X)服务为我的应用程序(基于Django)的一部分提供安全登录。来自X的内容在iframe中提供,该iframe只是嵌入在我的一个页面中。
我花了很多时间在X的应用程序中构建自定义内容(这是一个自定义的交互式地质工具),而我对X的订阅也很昂贵。我希望防止我的一个用户与其他同事或其他公司的用户共享iframe链接,只需使用我的X内容,甚至无需登录我的应用程序。
不幸的是,X无法通过IP或任何其他类型的链接安全性来限制iframe内容。我知道,听起来很疯狂,但这就是现在的样子。
构建自己的安全解决方案的最佳方法是什么?有没有办法使用另一台服务器作为中介,以便当客户端打开页面时,我的实时服务器命中我的中间服务器从X获取内容? 然后,我是唯一一个从我的实时服务器接受我的中间服务器上的请求的人。
答案 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(服务器除外)..