Что такое API и почему ключ API — это ключ от кошелька
Что такое API простыми словами: как программы просят друг у друга данные и действия, зачем нужен ключ API и чем публичный ключ отличается от секретного.
API (application programming interface) — это способ, которым одна программа просит другую что-то сделать или что-то отдать. Если интерфейс для людей — это кнопки и экраны, то API — это интерфейс для программ: список запросов, которые можно отправить, и ответов, которые на них придут.
Вопрос «что такое API» возникает у каждого, кто подключает к своему приложению оплату, карты, почту или ИИ-модель. Термин простой, но за ним стоит одна вещь, которую важно понять сразу: ключ API — это деньги.
Что такое API на примере ресторана
Представь ресторан. Ты не идёшь на кухню, а говоришь официанту, что хочешь, из меню. Официант передаёт заказ, кухня готовит, официант приносит блюдо. Меню — это документация API, официант — сам API, кухня — чужой сервер, которого ты никогда не увидишь.
На практике это выглядит так. Твоё приложение хочет отправить письмо через почтовый сервис. Оно отправляет запрос на адрес вроде https://api.mailservice.com/send с получателем, темой и текстом. Сервис отвечает: «принято, вот номер письма» или «ошибка, адрес некорректный». Каждый такой адрес с определённым действием называется эндпоинтом.
Почти всё, что твоё приложение умеет «из коробки», на самом деле делается через чужие API: оплата, вход через Google, карты, отправка SMS, генерация текста. И твой собственный бэкенд — тоже API, только для твоего фронтенда.
Зачем нужен ключ API
Сервис должен знать, кто к нему обращается: чтобы выставить счёт, применить лимиты и отличить тебя от остальных. Для этого при регистрации ты получаешь ключ — длинную строку, которую прикладываешь к каждому запросу.
И здесь главное. Для сервиса ключ и есть ты. Он не проверяет, откуда пришёл запрос и кто его на самом деле отправил. Если кто-то получит твой ключ к ИИ-модели, он будет генерировать текст за твой счёт. Если ключ к почтовому сервису — рассылать спам от твоего имени, и заблокируют твой аккаунт. Если ключ к платёжной системе с правом возвратов — последствия понятны.
Поэтому ключ API стоит воспринимать как ключ от кошелька, а не как пароль от чего-то неважного. Найденные ключи используют быстро: автоматические сканеры ищут их в публичных репозиториях и в коде сайтов постоянно.
Публичный и секретный ключ
Многие сервисы выдают два вида ключей, и путать их опасно.
- Публичный ключ (publishable, anon, client key) специально предназначен для браузера и мобильного приложения. Он позволяет только то, что безопасно отдать всем: начать оплату, показать карту, обратиться к базе с правами анонимного пользователя. Его видно в коде сайта, и это нормально.
- Секретный ключ (secret, service role, server key) даёт полный доступ: списывать деньги, читать все данные, обходить правила доступа. Он должен жить только на сервере, в переменных окружения, и никогда не попадать в браузер, в репозиторий или в скриншот.
Простой признак: если в названии или документации есть слова secret, service_role, private или ключ начинается с sk_, место ему — только на сервере. Если сервис выдаёт один ключ на всё, считай его секретным.
Публичный ключ тоже стоит ограничить: многие сервисы позволяют привязать его к своему домену или приложению, чтобы чужой сайт не мог им пользоваться.
Что делать, если ключ утёк
- Сразу отзови его в панели сервиса и выпусти новый. Удалить ключ из кода недостаточно: копия уже могла уйти.
- Посмотри журнал использования и счёт: были ли запросы, которые делал не ты.
- Поставь лимиты расходов и уведомления о них — там, где сервис это позволяет. Это не защита от утечки, но защита от катастрофы.
- Найди, как ключ оказался снаружи, и закрой эту дорогу, иначе новый ключ утечёт так же.
Коротко
- API — способ, которым программы просят друг у друга данные и действия.
- Ключ API говорит сервису, кто платит, поэтому тот, у кого твой ключ, тратит твои деньги.
- Публичный ключ можно показывать в браузере, секретный — только на сервере.
- Утёкший ключ нужно отозвать и заменить, а не просто удалить из кода.
- Лимиты расходов у внешних сервисов — дешёвая страховка от дорогой ошибки.
SUBXCAT может проверить, где в твоём приложении лежат ключи и что они на самом деле позволяют.