1

我目前正在开发一个将使用至少两个域的 SaaS 平台:

并且可能会使用其他自定义域...

我正在尝试设计一种策略,以在使用所有域时启用相当多的安全性,同时将所有远程调用和“小部件”交互整合到Domain(b) [ https://example. com ]。

(快速说明 - 我使用“小部件”作为一般术语。这些在源 HTML 页面上,而不是 iframe 插件或 javascript 文档写入。)

在浏览了关于 Portholes、JSONP、跨域脚本、浏览器安全模型等的大量文档之后……我想出了这个总体思路。我希望得到一些反馈...

  1. 登录到“网络”会为Domain(b)创建一个辅助 cookie -- WidgetSession
  2. 访问所有域获取 Domain(b)/javascript/utils.js
  3. 访问 Domain(b) 以外的域获取 Domain(b)/api/widget-session.js ,它有一个回调来将活动的WidgetSession注册到 utils.js javascript 包中。
  4. 所有 API 交互都通过WidgetSession cookie 进行,该 cookie 仅对一定数量的活动有效。

使用这种策略,我似乎能够绕过所有浏览器安全锁定,涉及的工作不多,并且对消费者的风险/风险最小化+很少。

谁能指出任何陷阱或提供更好的建议?

我尝试采用 iframe 方法(使用 porthole.js 库),它可以跨域工作,但是在涉及协议时,我一直在浏览器中被阻止。这听起来更简单、更安全,尽管它不会从缓存中受益太多。

4

1 回答 1

1

据我了解,来自 3rd 方域的 cookie 已经被 safari 拒绝,并且将来也会被 Firefox 拒绝。

此外,将 JSONP 与 cookie 结合使用(总是?)容易受到 CSRF 攻击。

我在stackoverflow上的编辑评论被破坏了,所以在这里回复。Firefox/Safari 的问题是猜测,所以我不能 100% 确定。实际上,我认为最好的方法是 iframe 方法。我猜“舷窗”就是这样做的。如果您在跨越 http / https 时遇到问题,请确保您同时支持两者。如果“客户端”在 https url 上运行,您的 iframe 也应该从 https 提供。

于 2013-03-08T00:44:01.697 回答