【问题标题】:Is GAE Channel API secure? And what is the underlying implementation?GAE Channel API 安全吗?什么是底层实现?
【发布时间】:2012-04-29 09:21:33
【问题描述】:

我正在使用 GAE + Python 创建一个需要向客户端发送敏感数据实时更新的应用程序,我想知道App Engine Channel API 是否安全。使用 HTTPS 就足够了吗,还是通道需要自己的安全协议?

另外,App Engine Channel API 的底层实现是什么? Websockets,SSE?看起来它真的只提供了一种从服务器到客户端通过通道进行通信的方式,然后让客户端使用标准的 HTTP 请求与服务器进行通信。

【问题讨论】:

    标签: python security google-app-engine https channel-api


    【解决方案1】:

    由于通道是服务器和客户端之间的长期有效连接,因此出于性能考虑,通道在许多情况下不允许使用资源消耗安全方法。正如official manual 中声明的那样,服务器仅通过 HTTP 请求从客户端接收更新消息。据我所知,即使 Dropbox 也通过 HTTP 发送其长期通知消息,使用非常短的通知来判断是否有新内容。

    幸运的是,有两种方法可以确保您的安全。

    1. 仅在某些状态发生变化时通过 HTTP 通道通知您的客户端。之后,让客户端决定是否应该发出一个可以是安全通信的进一步请求。这是最常用的渠道使用方式。

    2. 虽然这不是我个人推荐的方式,但是你可以自己加密你的数据,把这些加密的数据放在不安全的 HTTP 通道上运行。

    【讨论】:

    • 所以您是说通道不安全,因为它们使用 HTTP 而不是 HTTPS?
    【解决方案2】:

    与通道 API 的连接是通过 HTTPS 建立的,无论您的页面是如何加载的,因此无法窃听通道 API 连接的内容。只要您对通道密钥保密,那么您的通道就是您的应用和客户端之间的安全通信通道。

    通道是使用长轮询(彗星)实现的。

    【讨论】:

    • 很高兴知道。您是如何得知这些信息的?我在 GAE 开发页面中没有看到这一点。此外,在我看来,谷歌只是创建了频道 API,以此作为向人们收取另一项服务费用的借口。是什么阻止我自己免费实施 webosckets 或 SSE?或者甚至为此使用长轮询(除了 GAE 将请求限制为 30-60 秒或类似的时间)?
    • 您可以自己实现长轮询(我见过这样做的代码,但实现它的人在可用时切换到 Channel API)。几乎可以肯定,与使用 Channel API 相比,您在实例小时数上支付的费用要多得多。
    • @Nick Johnson 没关系,我知道你是 GAE 的开发人员,这就是你知道的原因。
    • 澄清一下:频道依靠长轮询,但如果可用的话,他们将使用更高级/现代的浏览器推送实现。
    猜你喜欢
    • 1970-01-01
    • 2015-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-12
    • 2010-11-05
    • 2017-07-26
    • 1970-01-01
    相关资源
    最近更新 更多