Как по-настоящему защитить ключ API приложения Android от Google, если он использует SafetyNet?

В настоящее время я использую ключ API Google, сгенерированный мной, и помещаю его в приложение Android для доступа SafetyNet а также Google Maps, Я планирую перевести все вызовы API Карт Google на свои собственные серверы, где я храню свой ключ API Google на сервере, а не на клиенте. Но тогда я также использую SafetyNet API в моем приложении и ключ API Google должны быть в приложении для приложения Android, чтобы позвонить, чтобы получить JWS ответ. Так что я в загадке. Я не хочу, чтобы где-нибудь в приложении был ключ API Google, что было бы хорошо, если бы я не использовал SafetyNet но мне нужно это использовать.

1 ответ

С новым API (Play Services 11.0.0+) ключ API больше не сохраняется в манифесте. Вместо этого вы передаете его в качестве аргумента аттестационному вызову, который открывает множество новых способов защиты вашего ключа. Например:

  • Вы можете запутать свой ключ внутри приложения и создать его программно. Это лишь затрудняет извлечение злоумышленниками.

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

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

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