Как спихнуть на соседа счёт за пользование услугами Yandex Maps API или для чего IT гиганту нужен контроль качества

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Прежде чем перейти к статье, хочу вам представить, экономическую онлайн игру Brave Knights, в которой вы можете играть и зарабатывать. Регистируйтесь, играйте и зарабатывайте!

С 10 июня 2019 (а технически с ноября 2019), Яндекс прекратил поддержку анонимного использования сервисов JS API & HTTP Geocoder — тарифицируемые запросы к API (поиск, геокодирование, панорамы и т.д.) перестали работать. Но адекватного биллинга и трекинга запросов Яндекс — не предоставил. Если интересно как спихнуть счёт за геокодирование на гигантов рунета (перечисленных партнёров на заглавной странице сервиса), а так же — как трекинг запросов делается «по уму» — прошу под кат.

Почему появилась эта статья
Я бы не написал этот пост, если бы уважаемый valshavel не отклонил мой комментарий к статье «Как мы внедряли WebAssembly в Яндекс.Картах и почему оставили JavaScript». Там задавался вопрос «почему».
Писать в техподдержку Яндекс карт — по опыту за 10 лет — не эффективно, ощущение что там только один разработчик который тянул весь проект. На самом деле, вместо Сбербанка — золотую акцию надо было дать этому разработчику и ещё пару процентов обычных.

«Как оно работает» с JS API карт


Компания или разработчик регистрируется в личном кабинете разработчиков Яндекса. И создаёт ключ (похож на UUID). Ключ не имеет никаких настроек (Домен, лимиты и т.д.) и служит только для разделения тарификации.

На странице где требуются функции карт — вставляется JS скрипт и API ключ: (URL для «платной» версии может отличаться).

<head>
    <script src="https://api-maps.yandex.ru/2.1/?apikey=ваш API-ключ&lang=ru_RU" type="text/javascript">
    </script>
</head>

Заметили? Нет? Следите за пальцами:


  1. Ключ является публичным. (АЛЛО! какой нафиг биллинг по публичному API ключу?).
  2. На ключе отсутствуют настройки (Привязки к домену, сервису, лимиты).
  3. Любой может взять ваш ключ и использовать в любых целях (это не запрещено законом, вы сами его публикуете на своей странице и рандомный хеш не является объектом авторского права).

Далее статью можно было бы не писать. Но мы ведь за добро и за своё бабло, учитывая что размещая этот ключ — оно тратится третьими лицами.

Давайте подумаем, что нужно сделать папе(не биологическому, но всё же) рунета (и тому герою-разработчику), чтобы дети не страдали:


  1. Одна карта — один ключ (https://www.mapbox.com/).
    Ключ относится к конкретной карте. В настройках ключа прописываются разрешённые домены (не забудте про wildcard). По ключу запрещается геокодирование через HTTP API.
  2. Лимиты запросов.
    Я не хочу попасть на деньги из-за злоумышленников.
  3. Авторизация к ключу / Приватный ключ.
    Я хочу ключ для своих сервисов которые используют геокодинг и отдельный билинг по ним.Я не хочу чтобы джун залез в ЛК и взял мой ключ для публичной карты.

Пока это всё отсутсвует — любой может взять ваш ключ и геокодить в удовольствие.

Всем добра и берегите свои ключи =)
Источник: https://habr.com/ru/post/476754/


Интересные статьи

Интересные статьи

В своей статье "Использование GitHub в обучении студентов" я кратко коснулся темы использования GitHub'а именно как инструмента для обучения, а не как темы в обучении. Се...
Пять секунд — это много или мало? Чтобы выпить горячий кофе — мало, чтобы приложить карту и пройти на работу — много. Но иногда даже из-за такой задержки на проходных образуются оче...
Представляем вашему вниманию вторую часть перевода материала, посвящённого особенностям работы с модулями в Python-проектах Instagram. В первой части перевода был дан обзор ситуации и показаны дв...
Cтатья будет полезна тем, кто думает какую выбрать CMS для интернет-магазина, сравнивает различные движки, ищет в них плюсы и минусы важные для себя.
Один из самых острых вопросов при разработке на Битрикс - это миграции базы данных. Какие же способы облегчить эту задачу есть на данный момент?