Хранение ключа API в приложении iPhone небезопасно? - PullRequest
3 голосов
/ 13 декабря 2010

Я создаю приложение для iPhone, которое должно подключаться к веб-сайту на основе PHP.Приложение iPhone будет извлекать и добавлять записи.Я предполагаю, что связь между сайтом и приложением iPhone должна контролироваться ключом API.Приложение для iPhone предоставляет его, и веб-сайт проверяет его.

Полагаю, мне придется хранить этот ключ API в самом приложении iPhone, верно?Итак, мой вопрос;рискованно хранить ключ API в приложении iPhone?Не может ли кто-то каким-то образом получить доступ к моему API-ключу и выдать себя за приложение iPhone, тем самым получая доступ к веб-сайту?или это довольно сложно сделать?Если я думаю об этом неправильно, скажите, пожалуйста, есть ли лучшие способы.

Ответы [ 2 ]

10 голосов
/ 13 декабря 2010

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

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

Лично мне нравится идея иметь ключ API в запутанном виде внутри двоичного файла приложения, поскольку двоичный файл, который вы получаете из App Store, зашифрован. Небольшая хакерская функция ptrace () с PT_DENY_ATTACH может еще больше усложнить (но никогда не помешает полностью) получить доступ к вашему приложению через gdb. Скорее всего, этого будет достаточно, чтобы ваше приложение не перемещалось по Интернету торрентами в расшифрованном виде. Тогда вам придется использовать HTTPS только потому, что прослушивание трафика смехотворно легко и даже не требует взлома.

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

0 голосов
/ 13 декабря 2010

Вы можете использовать Keychain Services для хранения ключа, как Mac хранит пароли - не на 100% уверен, но я думаю, что он также шифрует пароли и хранит их в безопасной песочнице от других любопытных рук (конечно, песочница не имеет смысла на взломанном iPhone с правильными инструментами, такими как упомянутый Costique)

В любом случае стоит заглянуть в:

http://developer.apple.com/library/ios/#documentation/Security/Conceptual/keychainServConcepts/iPhoneTasks/iPhoneTasks.html

Но определенно используйте HTTPS, иначе любой может его понюхать без особых усилий.

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