Как защитить JSON-запросы от iPhone? - PullRequest
2 голосов
/ 06 ноября 2011

У меня есть веб-приложение с JSONP API, которое я использую с моим приложением для iPhone.Как мне это защитить, чтобы запросы из других мест не могли получить доступ к моему API?

Уточнение : Мои данные не так важны.Вам даже не нужно входить в систему, чтобы просмотреть его.Я просто не хочу, чтобы моя БД работала над запросами из других источников.

Ответы [ 4 ]

3 голосов
/ 06 ноября 2011

Вы встали на очень очень сложную тему. Приготовьтесь к очень долгим ночам чтения различных техник по защите вашего кота и мыши. Я думаю, что вам лучше всего ставить секретную строку в заголовке каждого запроса. Примерно так:

Секретный заголовок: # $ F @ FQAFDSFE # $% # ADSF ()) *

Проверьте этот заголовок на стороне сервера и используйте SSL. Кто-то может легко ответить на этот пост «Ну, это не останавливает это, это и это», и они будут правы. Вопрос в том, беспокоит ли вас банк из-за того, что кто-то истощает счета вашего клиента? Или вы просто беспокоитесь о том, что 99,9999% населения недостаточно воли для того, чтобы угнать ваше барахло?

У некоторых людей есть разные мнения на этот счет, но если ваши пользователи требуют аутентификации для доступа к веб-сервисам, достаточно указать имя пользователя и пароль в заголовке через SSL. Они все еще могут похитить ваши услуги, но не смогут увидеть то, что они не должны были в любом случае. Это работает только на уровне настройки типа пользователя, хотя. Если это полностью публично, вы должны рассмотреть, насколько не важны ваши данные. Это может быть не так важно, как вы думаете.

1 голос
/ 06 ноября 2011

Вы можете использовать протокол TLS с сертификатом клиента. http://en.wikipedia.org/wiki/Transport_Layer_Security

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

1 голос
/ 06 ноября 2011

Вы можете встроить закрытый ключ RSA в клиент iPhone и отправлять подписанную временную метку с каждым запросом.
Сервер проверяет временную метку с открытым ключом и отклоняет неподписанные запросы.

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

0 голосов
/ 06 ноября 2011

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

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