Как по-настоящему защитить ключ 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 аттестации является бесплатным.