Безопасная связь между сервером django и приложением iphone

Я пишу приложение для iPhone, которое должно отправлять небольшие кусочки информации (две строки по 128 символов в каждой, за один раз, и это происходит не слишком часто) на сервер, когда пользователи взаимодействуют с ним. Я хотел бы, чтобы эта информация оставалась конфиденциальной, поэтому я думаю о необходимости какого-либо шифрования или безопасного соединения.

Мой вопрос о серверной стороне вещей. Сервер, с которым должно общаться приложение iPhone, написан на django и работает на lighttpd. Каков наиболее подходящий (или стандартный) способ сделать это? Я думал https, который я знаю на iPhone, что я могу использовать ASIHTTPRequest для выполнения запроса POST, но я не знаю, что для этого требуется на стороне сервера. Нужен ли мне сертификат? Как данные зашифрованы / защищены? Есть ли какие-нибудь модули django, чтобы помочь с этим? Нужно ли что-то делать для настройки lighttpd?

Что-то вроде xml-rpc или json-rpc будет проще? Можно ли обезопасить такое общение? На каком уровне это произойдет?

Любая помощь приветствуется.

13.10.2009 04:38:04
3 ОТВЕТА
РЕШЕНИЕ

Использование xml-rpc или json-rpc - это всего лишь средство для инкапсуляции ваших данных в форму, которую легко транспортировать. Ваше приложение для iPhone может преобразовывать данные Objective C, используя один из этих форматов, а ваше серверное приложение Django может преобразовывать данные обратно в объекты Python.

Ни один из них не имеет никакого отношения к безопасности.

Создание HTTPS (SSL) соединения шифрует все коммуникации между клиентом (iPhone) и сервером (Django). Вам нужно будет получить сертификат на стороне сервера. Это указывает клиенту, что сервер является тем, кем он себя считает. Следующее направление ваших исследований должно быть о том, как настроить lighttpd для обработки трафика SSL. Как только lighttpd согласовывает связь SSL, ваше приложение Django будет работать так же, как и для незащищенного трафика.

Это ваш лучший выбор.

Если по какой-либо причине вы не хотите использовать SSL, вы можете найти надежные библиотеки шифрования для обоих концов связи. Приложение iPhone может зашифровать данные, отправить их по HTTP-соединению, а приложение Django может расшифровать их. Например, библиотека Pycrypto Python реализует надежные шифровальные шифры, такие как AES и Blowfish . Возможно, вы сможете найти реализацию одного из этих шифров, написанных в Задаче C.

Вы заметили, что это становится все более сложным?

Перейти с SSL. Это способ обеспечения безопасности для связи на основе HTTP.

4
10.07.2011 20:31:01

Хм, похоже, это может быть то, что вы ищете, вы видели это?

Настройка SSL для Lighttpd / Django

Если я правильно понял, эта настройка позволяет вашему серверу отвечать на запросы https и http (?) Тогда, если все ваше приложение не будет https, есть промежуточное ПО SSL, которое поможет настроить некоторые пути как ssl, а некоторые - нет.

1
13.10.2009 05:50:49

Если вы используете https (SSL) на стороне сервера, не должно иметь значения, используете ли вы XML-RPC или JSON-RPC. Все передаваемые вами данные будут зашифрованы и защищены.

Я могу говорить только из нашего Rails-приложения и nginx. Я купил SSL-сертификат у GoDaddy (очень дешево), и nginx настроен для шифрования контента (Rails сам этого не делает), когда отправляет его. На iPhone ASIHTTPRequest будет отвечать за расшифровку данных. Все остальные уровни не должны беспокоиться о шифровании, вы можете отправлять все, что захотите.

Вы также можете использовать самозаверяющий сертификат. Мы решили использовать GoDaddy, так как мы также используем SSL-сертификат для обычных браузеров, и те показывают предупреждающее сообщение пользователю, если сталкиваются с самозаверяющим сертификатом, который, очевидно, отпугивает людей.

1
16.10.2009 09:48:30