2013-07-19 2 views
2

Мы добавляем поддержку Dropbox в наше приложение, и теперь у нас есть «ключ приложения» и «секрет приложения». Я мог бы просто сохранить их как обычный текст в коде, как указано в синхронизации API учебника:Должен ли я шифровать мой ключ/секрет приложения Dropbox?

DBAccountManager* accountMgr = 
    [[DBAccountManager alloc] initWithAppKey:@"hf2hf892hf9y29h" secret:@"n29fh82h4f"]; 

(Примечание. Что это сделано до ключ и секрет, не наш реальный)

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

Это что-то беспокоит, или это просто факт жизни, что кто-то, кто действительно хочет, может войти и узнать ключи?

ответ

2

Это то, что кто-то беспокоится о

Любой здравомыслящий заботы разработчиков об этом. Используйте какую-то форму шифрования.

Подсказка: мое отношение - когда я загрузить приложение из AppStore, который требует некоторой формы входа в [вставить произвольный вебсервис здесь], я обычно расшифровать бинарный и запустить otool или, по крайней мере, strings на нем. Если в нем есть незашифрованные пароли/ключи OAuth/ключи SSL и т. Д., Я обычно удаляю их немедленно.

Это просто факт жизни, что кто-то, кто действительно хочет, может войти и узнать ключи?

Практически yes, even the keychain isn't secure ;-). Это, однако, no предлог за то, что вы не постарались изо всех сил, если объект является безопасностью ваших данных и/или ваших пользователей.

+0

Похоже, вы говорите о приложении, в котором хранятся имя пользователя и пароль, а не то, как работает интеграция с Dropbox - у самого приложения есть «ключ» и «секрет», которые полностью отключаются от учетных данных пользователя. Я неправильно понимаю ваш ответ? API Dropbox обрабатывает учетные данные пользователя, поэтому автор приложения даже не видит имя пользователя/пароль для пользователя. – Colen

+1

@Colen Я боюсь, что это так. Я сам работал с Dropbox SDK. Как вы заявляете, вам нужен идентификатор приложения и секретный ключ, чтобы Dropbox разрешал ваше приложение. Если вы жестко скопируете их в приложении, простые строки будут раскрываться в открытом виде. Это означает, что можно тривиально выдать атаку кражи личных данных, маскируя свое вредоносное приложение как ваше, следовательно, подвергая безопасность ваших пользователей атакующему. –

+0

Но пользователь все равно должен войти в Dropbox через вредоносное приложение, не так ли?Так что это должно было бы пойти: 1) Как-то скачать вредоносное приложение (само по себе на iOS); 2) Пользователь активно регистрируется в Dropbox через вредоносное приложение; 3) Атакующий может красть файлы. Если пользователь собирается войти в Dropbox в любом случае, злоумышленник может просто предоставить поддельный экран входа в «Dropbox» и украсть все * файлы пользователя таким образом. – Colen

0

Прежде всего, ваша забота действительно. Вы должны положить его в брелок.

Однако ничто не является абсолютно безопасным, даже брелок, как уже сказал Carbonic Acid. Иногда возникает ошибка сосредоточения внимания на одной угрозе безопасности и игнорирование другой, более крупной проблемы. Это очень похоже на оптимизацию (кроме того, сложнее профилировать безопасность, чем производительность).

Вам не нужно делать ваши секреты невозможными, чтобы украсть, а более дорогой украсть, чем приобретать в другом месте. Ключи API Dropbox не являются точно курсовыми зубами.

+0

Разве это не просто перемещение цели? Конечно, я мог бы поставить ключ/секрет в брелок где-то, но тогда все, кого нужно, это найти место, где я помещаю их в брелок и извлекать их оттуда. – Colen

+0

Вид, но теоретически сложнее извлечь материал из брелка, чем приложение. –

Смежные вопросы