2014-01-27 5 views
0

У меня есть веб-сервис, который выполняет некоторую операцию оплаты, поэтому это очень важно. Конечно, у него есть секретный ключ, который нельзя назвать без него.Защита секретных ключей в Android

Я буду предполагать, что рано или поздно мой файл .apk будет декомпилирован, и код будет доступен для чтения. Теперь, если я решил получить этот ключ, вызвав другую услугу, URL-адрес этой службы будет сохранен в моем коде, но я только что сказал, что он не защищен и не может быть скрыт !!

Каков наилучший подход в такой ситуации?

+2

Зачем вводить секретный ключ в приложение? Предположительно, для этого есть серверный компонент. Используйте секрет там и поместите открытый ключ в свое приложение. –

+0

@Mike W: если бы я мог понять вас, разве опасно размещать открытый ключ в моем приложении? Мне не нужно позволять хакеру называть мои услуги и украсть мое содержимое. –

+1

Я неправильно понял вопрос из вашего использования терминологии. Если это ваша проблема, вам нужно как-то заставить пользователя пройти аутентификацию. Возможно, заставьте логин один раз и предоставите уникальный ключ каждому пользователю в то время. После того, как уникальный ключ будет выпущен и сохранен на устройстве, вам не нужно будет входить в систему. Вы можете периодически повторять этот процесс и, возможно, привязать ключ к идентификатору устройства (номер IMEI, возможно?) –

ответ

1

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

В этом случае декомпиляция приложения не поможет хакеру, поскольку ему все еще нужны учетные данные пользователей.

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

+0

Спасибо, ты прав. но что делать, если в моем приложении нет входа? –

+1

В этом случае это не безопасно. Каждый может просто использовать [http://www.wireshark.org/download.html](Wireshark) для отслеживания вызовов URL-адресов и совершения одинаковых вызовов. Вы можете сделать это немного сложнее, используя алгоритм для добавления значения к запросу, который действителен только на несколько секунд, но это далеко не «безопасно». – fifarunnerr

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