Чей ключ Google API я использую в [вашем любимом приложении поддержки местоположения]? - PullRequest
0 голосов
/ 30 ноября 2018

Небольшое вступление

Итак, я играл с API геолокации карт Google в кроссплатформенном электронном и веб-приложении.

Использование "больше не того нового" navigator.geolocation.getCurrentPosition(callback) в моих браузерах (chrome / chromium / firefox и, я полагаю, и другие большие) работает так же, как и всегда.В Electron, однако, мне предлагается сначала зарегистрироваться в API.

Удивительно, но Google maps требует от вас предоставить платежный адрес, который затем будет использоваться для оплаты ваших вызовов API.(Вы можете прочитать об этом здесь: https://developers.google.com/maps/billing/understanding-cost-of-use)

По словам этих парней https://github.com/electron/electron/issues/13143 Electron поставляется с встроенным API-ключом, который доступен всем (если вы не установили свой собственный)

Естественно, возникает вопрос, откуда мой браузер получает ключ API? Все ли браузеры тоже имеют один и тот же ключ? Кто оплачивает все эти звонки, скажем, из Firefox? Очевидно, что никто не может оставатьсяв пределах бесплатной квоты в 200 долларов в месяц.

Возможно, существует недокументированный мета-API для получения ключей API на лету, который используют браузеры?

Может быть, кто-то может пролить свет наПриветствия.

Приложение:

Углубившись в тему, я обнаружил следующее:

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

Вы можете проверить это, например, проверяя

git clone https://aur.archlinux.org/chromium-dev.git

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

# Google API keys (see http://www.chromium.org/developers/how-tos/api-keys)
# NOTE: These are for Arch Linux use ONLY. For your own distribution, please
# get your own set of keys. Feel free to contact foutrelis@archlinux.org for
# more information.
_google_api_key="AIzaSyDwr302FpOSkGRpLlUpPThNTDPbXcIn_FM"
_google_default_client_id="413772536636.apps.googleusercontent.com"
_google_default_client_secret="0ZChLK6AxeA3Isu96MkwqDR4"

Быстрый поиск в Google обнаруживает множество проектов, которые уже присвоили ключ Arch для себя.

В дополнение к тому, что это явная зияющая дыра в управлении ключами в arch-chromium'sсторона, проблема простирается намного дальше, чем это.

Возможно, вы заметили, что приложение google-maps-mobile на мобильных устройствах также работает без включенных служб GPS (и поэтому, скорее всего, использует API на основе IP).Теперь предположим, кто-то реверс-инженеры этот ключ .Что может сделать Google?Полный запрет каждой установки Google-Maps кажется самоубийством.Принудительная установка патча для замены сломанного ключа только откладывает проблему до тех пор, пока она не будет сломана снова.

Вердикт?

Кажется, что есть золотой Ключи API, плавающие в интернете.Некоторые принадлежат крупным компаниям, некоторые принадлежат фондам с открытым исходным кодом, а некоторые принадлежат просто обычным людям.

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

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

Но время от времени вы можете столкнуться с этой проблемой, и вам придется задавать себе моральный (или юридический?) Вопрос, если ключ хранится в файле с лицензией GPL, если он открыт для взлома.

...