Защита вашего ключа API в Android

Я делал приложение, используя TMDB API, и делал несколько запросов REST для получения запрошенных данных. Мне было интересно, может ли хакер понюхать URL-адрес и получить ключ API, поскольку ключ присутствует в URL-адресе.

Если да, как мне защитить ключ?

2 ответа

Решение

Проще говоря, вы не можете защитить свой ключ API, пока он остается в приложении для Android. Даже если вы каким-то образом зашифруете ключ API, люди, которые занимаются реконструкцией вашего приложения (декомпиляцией), могут извлечь ключ API, поскольку ваш ключ дешифрования также должен находиться где-то в APK (иначе ваше приложение не может использовать ключ API).

Единственное решение состоит в том, чтобы разгрузить обработку с помощью ключа API на свой собственный сервер и обеспечить безопасный способ подключения вашего приложения к этому серверу (то есть SSL).

Таким образом, вы переходите на единую систему безопасности на уровне точки отказа (ваш сервер) вместо огромного количества мобильных приложений, которые могут быть подвергнуты обратному проектированию и которые трудно отследить (различные версии устанавливаются с течением времени)

Есть несколько решений, но не все легко осуществить.

Если вы боитесь атак "человек посередине" при выполнении HTTP-запросов, вы можете рассмотреть возможность использования HTTPS. Затем все данные, включая URL, зашифрованы. Это сильно зависит от сервера, так как именно сервер должен обрабатывать HTTPS-запросы вместо HTTP.

Если вы боитесь людей, перепроектируйте ваш dexed и скомпилированный apk. Вы могли бы хотеть рассмотреть запутывание. Это сделает ваш apk необратимым, но по крайней мере сделать это будет очень сложно.

Другие вопросы по тегам