Как проверить, что это только наше приложение для доступа к телефонной связи, которое обращается к нашему API на стороне сервера? - PullRequest
2 голосов
/ 05 апреля 2011

Мы используем jQuery Mobile и Phonegap для создания приложения для iOS и Android, которое будет показано в двух магазинах. Приложения будут получать данные с удаленного сервера, используя Javascript и ваши обычные вызовы ajax / JSONP.

Мы надеемся как-то аутентифицировать приложение с помощью нашего бэкэнда. Обычно вы можете ограничить доступ к удаленному API из определенного домена, мы не можем этого сделать, потому что файлы будут храниться локально и использовать протокол file: //, поэтому мы используем JSONP, чтобы избежать той же проблемы политики происхождения .

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

Есть какие-нибудь идеи о том, как ограничить доступ API только к приложению, или это просто случай сделать все возможное и оставить наш API достаточно открытым?

Спасибо.

Ответы [ 3 ]

1 голос
/ 06 апреля 2011

Phonegap распространяется как отдельный проект приложения.Это позволяет вам изменить его, добавив новую функцию API, которая будет скомпилирована и довольно безопасна.

Новая функция в API будет вычислять хэш из заданного начального числа и возвращать его.Тогда вам нужен тот же код на стороне сервера.

Достаточно будет хеширования семени и соли, тщательно встроенной в собственный код приложения.

Бинарный файл может быть достаточно запутан, чтобы люди не могли обнаружить соль, и у вас есть дополнительные сложностимог бы использовать - например.выберите соль в виде длинной строки, определенной семенем.

0 голосов
/ 08 апреля 2011

Я думаю, что это своего рода подвох 22 гибридных приложений.Вероятно, вам лучше всего использовать токен, сгенерированный нативным кодом.Существуют учебные пособия, в которых показано, как создавать пользовательские функции в собственном коде, который передается обратно в JS.Я бы проверил там сначала.

0 голосов
/ 05 апреля 2011

JavaScript-обфускация 0% безопасна ; это сдерживающий фактор, а не реальное решение. Вы можете запустить любой уменьшенный / запутанный JavaScript через реверсер и получить полный код. Кроме того, без особых усилий любой мог бы подделать ответы API PhoneGap на информацию об устройстве, поэтому единственным надежным способом избежать этого было бы использование сертификатов в контейнере приложения для передачи начального рукопожатия из приложения. Подходы iPhone и Android различаются по деталям, но это единственное реальное решение проблемы. Вы можете использовать другие подходы, такие как просмотр исходных IP-адресов и подтверждение того, что они получены от операторов мобильной связи, но это движущаяся цель.

...