2012-04-18 5 views
2

Я использую GAE + Python для создания приложения, которое должно отправлять в режиме реального времени обновления конфиденциальных данных клиентам, и я хотел знать, безопасно ли это App Engine Channel API. Будет ли использование HTTPS достаточным или потребуются каналы для собственного протокола безопасности?Безопасен ли API канала GAE? И какова основная реализация?

Кроме того, какова основная реализация App Engine Channel API? Веб-узлы, SSE? Похоже, он действительно обеспечивает только одностороннюю связь от сервера к клиенту через канал, а затем клиент использует стандартный HTTP-запрос для связи с сервером.

ответ

5

Подключение к каналу API осуществляются через HTTPS, независимо от того, как была загружена ваша страница, так что это не возможно, чтобы подслушивать содержание соединения с каналом API. Пока вы сохраняете секретный ключ канала, ваш канал является безопасным каналом связи между вашим приложением и клиентом.

Каналы реализованы с использованием длинного опроса (кометы).

+0

Полезно знать. Как вы узнали эту информацию? Я не видел этого на страницах GAE dev. Кроме того, это звучит для меня так же, как Google, просто создал канал api в качестве предлога, чтобы обвинять людей в другой услуге. Что может помешать мне просто реализовать webosckets или SSE самостоятельно бесплатно? Или даже использовать длительный опрос в этом отношении (кроме того, что GAE ограничивает запрос на 30-60 секунд или что-то в этом роде)? – MattL922

+0

Вы можете реализовать длинный опрос самостоятельно (я видел код, который делает это, но тот, кто его реализовал, переключился на API канала, когда он был доступен). Вы почти наверняка заплатите гораздо больше, например, за часы, чем если бы вы использовали API канала. –

+0

@ Ник Джонсон Ничего, я вижу, что вы разработчик GAE, и именно поэтому вы знаете. – MattL922

0

Поскольку каналы являются долгосрочными соединениями между сервером и клиентом, каналам во многих случаях не разрешается использовать многоразовые подходы к обеспечению безопасности из-за соображений эффективности. Как указано в official manual, сервер получает сообщения об обновлениях только от клиентов по HTTP-запросам. И насколько я знаю, даже Dropbox отправляет свое долговременное уведомление через HTTP, используя очень короткое уведомление, чтобы узнать, есть ли что-то новое.

К счастью, есть два способа обеспечения вашей безопасности.

  1. Уведомлять клиента только по каналу HTTP при изменении некоторых состояний. После этого позвольте клиенту решить, должен ли быть выполнен дополнительный запрос, который может быть безопасным. И это самый распространенный способ использования каналов.

  2. Хотя это не то, что я лично рекомендовал, вы можете сами зашифровать свои данные и поместить эти зашифрованные данные на небезопасный HTTP-канал.

+0

Итак, вы говорите, что каналы не защищены, потому что они используют HTTP, а не HTTPS? – MattL922

 Смежные вопросы

  • Нет связанных вопросов^_^