Ключ API в коде страницы: его видит каждый, кто открыл сайт

Ключ, который приехал в браузер, уже не секрет. Им ходят в ваш сервис от имени сайта, пока вы не выпустите новый и не выключите старый.

Карта, виджет чата, отправка заявок, личный кабинет. Разработчик кладёт ключ в скрипт на странице, потому что «так завелось в примере». Ключ приезжает каждому посетителю. Его не нужно «взламывать». Достаточно открыть страницу. Дальше чужой скрипт ходит в API с вашими лимитами, а счёт приходит вам.

Часть ключей для этого и предназначена: публичный ключ карты с ограничением по домену. Беда начинается, когда рядом лежит секретный, с правом читать заявки или менять заказы. Ограничение «только с нашего домена» в браузере обходится легко. Настоящее ограничение живёт на сервере: что этому ключу можно, и с какого адреса сервер вообще принимает запрос.

Как проверить без геройства

  • Открыть главную и кабинет как обычный посетитель и поискать в коде слова key, token, secret.
  • Разделить публичные ключи и те, что умеют читать данные. Вторые убрать с клиента.
  • После удаления выпустить новый секрет. Старый, который уже уехал в браузер, считается известным.
  • Посмотреть счёт и лимиты сервиса: необычный расход часто раньше, чем жалоба клиента.

Это типичная находка и аудита, и пентеста. Аудит видит, что секрет торчит. Пентест нужен, когда по этому ключу ещё и открываются чужие заказы. Lexora начинает с бесплатного базового аудита для новых клиентов и не раздувает смету, если достаточно убрать ключ и перевыпустить его. Если API большое и с ролями, пентест сайта считаем отдельно, от $50 за конечную точку.

Связанные услуги Lexora

Подозреваете, что ключ уже в коде страницы?

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