JSONP,Portholes和其他CrossDomain策略

时间:2013-03-08 00:39:28

标签: javascript cross-domain

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

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

我尝试制定策略以在使用所有域时实现相当大的安全性,同时整合所有远程调用和" widget"与域的互动(b) [https://example.com]。

(快速说明 - 我使用" widget"作为一般术语。这些是在源HTML页面上,而不是iframe drop-ins或javascript文档写入。)

在浏览了大量关于Portholes,JSONP,跨域脚本,浏览器安全模型等的文档之后......我已经提出了这个一般性的想法。我希望得到一些反馈......

  1. 登录网络'为域创建辅助cookie(b) - WidgetSession
  2. 访问所有域的访问域(b)/javascript/utils.js
  3. 访问Domain以外的域(b)获取Domain(b)/api/widget-session.js,它有一个回调函数将active WidgetSession 注册到utils.js javascript包中。
  4. 所有API互动均通过 WidgetSession Cookie进行,该Cookie仅对一定数量的活动有效。
  5. 通过这种策略,我似乎能够解决所有浏览器安全锁定问题,涉及的工作量不大,而且消费者的风险/风险最小化。

    有人能指出任何陷阱或提出更好的建议吗?

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

1 个答案:

答案 0 :(得分:1)

据我了解,来自第三方域名的cookie已经被safari拒绝,并且将来也会被firefox拒绝。

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

在stackoverflow上对我进行了

编辑评论,所以在这里回复。 Firefox / Safari问题是一个猜测,所以我不是100%肯定。我实际上认为最好的方法是iframe方法..我猜'舷窗'就是这样做的。如果您遇到跨越http / https的问题,请确保同时支持两者。如果'客户'在https网址上运行,您的iframe也应该通过https提供。