2012-04-18 104 views
2

我正在使用GAE + Python来创建需要向客户端发送敏感数据的实时更新的应用程序,并且我想知道App Engine Channel API是否安全。将使用HTTPS是否足够或通道是否需要自己的安全协议?GAE Channel API是否安全?底层的实现是什么?

另外,App Engine Channel API的底层实现是什么? Websockets,SSE?它似乎确实只是通过通道提供从服务器到客户端的单向通信,然后让客户端使用标准的HTTP请求与服务器进行通信。

回答

5

与通道API的连接通过HTTPS完成,无论您的页面如何加载,所以无法窃听通道API连接的内容。只要您保持频道密钥的安全,那么您的频道就是您的应用和客户端之间的安全通信渠道。

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

+0

很高兴知道。你是怎么看到这些信息的?我没有在GAE开发页面中看到这个。此外,Google对我的这种声音只是创建了频道api,作为向其他服务收费的借口。什么是阻止我自由地实施webosckets或SSE?或者甚至在这个问题上使用长轮询(除了GAE将请求限制在30-60秒之类的事实之外)? – MattL922 2012-04-18 10:42:30

+0

你可以自己实现长轮询(我已经看到了这样做的代码,但实现它的人在可用时切换到Channel API)。几乎可以肯定的是在实例时间内支付的费用要比使用Channel API时多得多。 – 2012-04-18 13:17:12

+0

@Nick Johnson没关系,我看你是GAE的开发者,这就是你知道的原因。 – MattL922 2012-04-18 14:43:44

0

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

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

  1. 只有当某些状态发生变化时才通过HTTP通道通知您的客户端。之后,让客户决定是否可以进一步提出安全通信请求。这是频道最常用的方式。

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

+0

那么你是说频道不安全,因为它们使用HTTP而不是HTTPS? – MattL922 2012-04-18 10:50:47

相关问题