带有 iframe 和用户的 Web 应用程序 - 如何处理会话?

信息安全 验证 会话管理
2021-08-17 06:03:11

我们有将在 iframe 中的应用程序。合作伙伴网站可以使用我们的应用程序 - 将 iframe 放入他们的网站。

合作伙伴网站有有钱的用户,他们会在 iframe 中使用我们的应用程序来购买商品。iframe 需要与合作伙伴站点进行通信。

例如用户购买商品。我们的应用程序在数据库中创建有关已售商品的记录。

然后它向合作伙伴应用程序发送请求 - 这样合作伙伴就会知道他的用户购买了一件物品,并可以减少他在账户中的钱。

用户不必登录我们的应用程序,只需登录合作伙伴应用程序 - 父站点并使用我们的 iframe 登录。

这是如何以安全的方式完成的?我知道有一个网站在 ajax 请求中没有可见的令牌,所以在子应用程序中可能有一些会话。会话,不需要用户名和密码。

我想获得一些带有架构的教程。尝试搜索但甚至不确定如何为此类问题制作关键字。

更新

这个怎么样,你看到什么可能不安全吗?

加载合作伙伴页面时,有 iframe 并在 get 参数中将令牌传递给 iframe,例如 <iframe src='www.shop.com?token=12345'><iframe>

服务器端加载 iframe - 从合作伙伴站点请求新令牌,将 url 作为 $_GET 参数的令牌作为参数传递。

这样 iframe url get 参数中的令牌就会失效,所以即使用户看到它,他也无法做任何事情。

在 iframes 服务器中接收到的新令牌保存在会话中。

所以现在从客户端 - 当客户在 iframe 中购买和物品时,他不需要在请求中传递令牌,因为它在会话中。

iframe 服务器收到请求时,会购买商品并将请求发送到合作伙伴服务器有关购买商品的信息,因此合作伙伴可以减少资金。在此请求中,令牌从会话传递到合作伙伴服务器。

合作伙伴服务器通过令牌识别用户并减少他在帐户中的资金。

1个回答

首先,据我所知,将安全应用程序放在 iframe 中并不是一个好主意,因为这会使您面临安全问题。如果所有其他操作都正确完成,最大的一个可能是点击劫持。这就是为什么要使用标题选项X-FRAME-OPTIONS来阻止它加载到 iframe 中的原因。

接下来,您希望在 iframe 中的合作伙伴网站和您自己的网站之间进行通信。由于同源策略,两者之间的通信非常有限如果 2 个网站,没有相同的基本 url,这意味着它们没有相同的来源,不能直接一起交谈。这是一件非常好的事情,否则您将遇到很大的安全问题。

用户不必登录我们的应用程序,只需登录合作伙伴应用程序 - 父站点并使用我们的 iframe 登录。

这假设您 100% 信任每个合作伙伴网站,因为他们拥有登录您网站所需的所有信息。是这样吗?

您尝试执行的登录类型类似于OAuth,其中第三方被授予对您网站的部分访问权限以访问某些信息。这不完全是您想要做的,但我会看看它是如何完成的。