Ключи API. Насколько
это безопасно? Часть 1

API (от англ. Application Programming Interface) — это программный интерфейс, который позволяет программам взаимодействовать друг с другом, обмениваться данными, а также интегрировать свои функции. 

API-ключи — это ключи шифрования, которые помогают совершить аутентификацию пользователя в системе, по аналогии логина и пароля. 

Если вы часто работаете с API или маркетинговыми интеграциями, вам необходимо знать, что такое ключи API и как они связаны с безопасностью — в этой статье мы подробно расскажем вам об этом.  

Что такое ключ API?

Ключ API — это идентификатор, который назначается клиенту API и используется для аутентификации приложения, который вызывает API. 

Обычно это уникальная буквенно-цифровая строка, которую API получает и проверяет. Многие API используют ключи чтобы отследить появление недействительных или вредоносных запросов.

Как правило, ключи API выполняют две основные функции в запросе:

  1. Аутентификация проекта: ключ API идентифицирует приложение, которое отправляет запрос к API. Каждый проект при этом имеет уникальный ключ.
  2. Авторизация проекта: ключ API сообщает, есть ли у приложения разрешение на использование API и к каким службам оно может получить доступ. Даже если приложение получит доступ к API, ему можно разрешить использовать только ограниченный набор служб API.

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

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

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

Как использовать ключ API?

API обычно требуют от разработчиков получения ключа перед запросом. Процесс должен быть отражен в документации на сайте разработчика API.

Чаще всего необходимо просто зарегистрировать учетную запись разработчика, указать адрес электронной почты и другую информацию. Затем необходимо зарегистрировать свой проект и ввести информацию о проекте.

Оттуда вы должны получить хотя бы один ключ API — уникальную строку случайно сгенерированных символов, которая связана с вашим проектом. Это будет выглядеть примерно так:

JPkxhc9cGFv35OWu267fsx8R6uZj29GL

Вы можете получить два типа ключа:

  1. Открытый ключ — может использоваться совместно с соавторами и более ограничен в доступе к данным и функциям API. 
  2. Закрытый ключ — это более точный идентификатор вашего проекта, который дает доступ к вашей учетной записи разработчика, а также ко всем вашим данным.

Чтобы включить ваш ключ API в запросы, обратитесь к документации API, чтобы узнать, где разместить ваш ключ — обычно он находится в заголовке запроса:

GET /https://api.example.com/resource/

auth: JPkxhc9cGFv35OWu267fsx8R6uZj29GL

Иногда он записывается в строке запроса после метода запроса:

GET ‘https://api.example.com/resource/?auth=JPkxhc9cGFv35OWu267fsx8R6uZj29GL’

Безопасны ли ключи API?

Веб-API — это распространенная цель кибератак, поскольку они передают конфиденциальные данные между приложениями, включая учетные данные для входа, личную информацию и финансовые транзакции, через интернет. Чтобы этого избежать,  веб-API должны быть всегда безопасны.

Ключи API могут идентифицировать проект для API и указывать, к каким ресурсам проект может получить доступ. Однако многие эксперты не считают API-ключи достаточно безопасными по следующим причинам:  

  1. Ключи API не могут аутентифицировать отдельного пользователя, который совершает запрос, а только проект или приложение, которое этот запрос отправляет.
  2. Ключи API похожи на пароли — они эффективны только в том случае, если владелец надежно их хранит. Если ключ попадет не в те руки, его легко можно будет использовать
  3. Поскольку срок действия ключей API редко истекает, хакер может использовать ключ неограниченное время, если только владелец ключа не сгенерирует или не деактивирует ключ.

По этим причинам популярные сегодня API также используют аутентификацию и авторизацию пользователей. 

  1. Аутентификация пользователя проверяет, что пользователь, который делает запрос является именно тем, за кого себя выдает. 
  2. Авторизация пользователя подтверждает, что у этого пользователя есть все разрешения для совершения этого запроса.

Аутентификация и авторизация пользователей выполняются с помощью токенов аутентификации, которые сами по себе более безопасны, чем ключи API. 

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

Это та же технология, что и технология единого входа, при которой пользователи могут входить в одно приложение (например, LinkedIn) через другое приложение (например, Google).


Источник: hubspot.com 

 

Условия передачи информации

Я даю согласие OOO «ЭсБилдер» (далее «BINN») на обработку моих персональных данных в соответствии со статьями 6, 9, 10, 18 Федерального закона от 27 июля 2006 года № 152-ФЗ «О персональных данных», указанных в онлайн-форме и/или предоставленных мною с целью:

Способы обработки персональных данных могут быть любыми, включая сбор, систематизацию, накопление, хранение, уточнение, обновление, изменение, воспроизведение, обезличивание, блокирование и уничтожение.

Настоящее согласие применяется в отношении обработки следующих данных: имя, номер телефона, адрес электронной почты (E-mail).

Настоящее согласие предоставляется сроком на пять лет. По истечении указанного срока действие согласия считается продленным на каждые следующие пять лет при отсутствии сведений о его отзыве.

Согласие может быть отозвано мною в любой момент путем направления в BINN подписанного мною письменного заявления.