Защита вашего ключа 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 необратимым, но по крайней мере сделать это будет очень сложно.