Сохранение ключей OAuth в коде для iPhone-приложений
Я пишу приложение для iPhone, которое интегрируется с сторонними API. Эти API используют OAuth (ключ/секрет, специфичный для моего приложения, а не для пользователя), чтобы аутентифицировать, какое приложение делает запрос от имени.
Безопасно ли (или насколько безопасно) просто поставить ключ/секрет в код? Могут ли подобные данные быть обратно спроектированы? Есть ли лучший способ включить эти данные в проект?
Ответы
Ответ 1
На iPhone нет места для скрытия данных. У пользователя с взломанным iPhone больше контроля над устройством, чем у любого разработчика. Если возможно, вам необходимо настроить веб-службу, такую как служба REST или SOAP, чтобы позаботиться об этих транзакциях OAuth от имени клиента.
Ответ 2
Как сказал ранее Rook, нет способа скрыть свои данные в iPhone. Но вы можете сделать хакерскую работу настолько сложной. Я только что сделал работу по той же проблеме.
![Encryption flow]()
- Поместить информацию о ключе OAuth в PLIST
- Я зашифровываю этот PLIST с помощью ключа AES и зашифровал "CIPHER TEXT"
- Измените ключ AES, добавив символы между ними с вашей собственной логикой. Поскольку во время выполнения требуется расшифровать plist
- Добавьте этот модифицированный ключ с помощью plist "CIPHER TEXT" и сохраните это значение в новом plist.
- Удалить старый plist, который имеет информацию oAuth
Теперь у вас есть только один plist, который имеет зашифрованное значение с измененным ключом
Преимущество:
-
Взлом настолько сложный, что у хакера нет правильного шифрованного текста в plist
-
Чтобы взломать этот код, они должны знать, чтобы отделить модифицированный ключ AES от текста Cipher.
-
Вы нашли Модифицированный ключ AES, они не имеют никакого представления об алгоритме добавления, здесь я просто использовал EVEN позицию персонажа, но вы не можете изменить это, и вы можете взять 3-ю или 4-ю позицию характера. На самом деле это будет отличаться для каждого разработчика.
для получения дополнительной информации см. ниже ссылку;
https://sites.google.com/site/greateindiaclub/mobil-apps/ios/securelystoringoauthkeysiniosapplication
Ответ 3
Я предлагаю заглянуть в службы Keychain, предоставляемые Apple
http://developer.apple.com/library/ios/#documentation/Security/Conceptual/keychainServConcepts/01introduction/introduction.html