我在业余时间一直在使用网络应用程序。
它主要面向公开发布/消费内容,因此内容可以通过http公开查看。它还允许/包含第三方小部件,因此需要http访问(许多供应商没有https版本,然后在https页面上存在http的混合内容问题)。由于这个和其他一些业务目标,99%的网站必须在http。
上可用到目前为止我实施的锁定方案是:
这引出了我的问题...
如果有人想在webapp上执行书签或社交活动,则需要通过HTTPS渠道进行 - 使用HTTPS Cookie等 - 但是,浏览器的相同原始策略将http和https视为两个不同的服务器。
我正在尝试考虑有效(最好是简单)的方法来允许从HTTP内容对HTTPS服务器进行API调用。我的第一个想法是使用JSONP,但我需要会话cookie - 这对我来说是不可见的。
有人有什么建议吗?
答案 0 :(得分:3)
让我尝试了解您的工作流程:您的HTTP页面必须调用HTTPS服务器,而HTTPS服务器又会访问会话cookie,并且您需要HTTP页面可以访问该响应,这是正确的吗?
这样做的一种方法是使用单独的iframe来托管与服务器通信的脚本,并使主页和iframe使用HTML5 postMessage进行通信。因此,实现上述工作流程的步骤将是:
postMessage
与iframe一起使用(序列化的)请求参数; postMessage
; 这不应该很难封装在单个函数调用中。这里棘手的部分是上面的粗体片段:如果iframe中的脚本没有正确确认请求来自正确的页面,这可能会创建一个CSRF漏洞(恶意页面可能会将您的安全脚本嵌入到iframe中,发送请求对它来说,只要用户在发生这种情况时进行身份验证,iframe就会尊重请求。
对于那个问题,不幸的是我的建议很少。总体而言,在HTTP页面中嵌入HTTPS内容是一个坏主意,但由于您有理由这样做,因此您也应该处理安全问题。