2012-04-18 96 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

相關問題