2013-03-12 3 views
3

Итак, я только что интегрировался с UrbanAirship для Android.Неправильно ли хранить ключи в файле .properties

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

Я не собираюсь начинать дискуссию о хранении конфиденциальных данных в вашем приложении. Я просто хочу знать, неприемлемо ли хранить такие ключи.

Если это так, то это более безопасный, но прямой подход? В настоящее время я храню свои собственные ключи API как статические переменные в файле глобальных данных.

ответ

2

Поскольку содержимое APK не зашифровано, строка так же легко извлекается из файла .properties, как из скомпилированного класса. Вы можете сделать его немного сложнее извлечь, сохранив его в зашифрованном виде в вашем классе Globals, но не ждите от вас чего-либо, что вы отправляете пользователям, чтобы оставаться тайной.

0

Если вам нужен безопасный способ загрузки ключей в память, запросите их с собственного сервера во время выполнения по защищенному каналу. Даже если вы храните ключи в общих настройках/базах данных, которые доступны только из вашей программы, корневое устройство будет работать вокруг этого, поскольку оно имеет доступ ко всем файлам. Файлы класса/Dex могут быть обращены в любое время.

Также взгляните на такие инструменты, как dexguard. Он обеспечивает больше обфускации, функции безопасности, чем proguard.

0

Что касается городского дирижабля; Ключ и секрет, которые вы размещаете в файле .properties, по существу, предназначены для вызова аналитики, а не для фактического «нажатия». Тем не менее, вам предоставляется мастер-секрет для API-вызова. Это секретное значение приложения, которое необходимо защитить. Вот почему Urban Airship отмахивается от устройства, требующего ключа приложения и секрет мастера. Если вы только сохраняете ключ приложения и секретный код Urban Airship, проблема с безопасностью отсутствует.

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