Ключ интерфейса прикладного программирования ( API ) — это секретный уникальный идентификатор, используемый для аутентификации и авторизации пользователя, разработчика или вызывающей программы в API . [1] [2]
Поставщики облачных вычислений , такие как Google Cloud Platform и Amazon Web Services, рекомендуют использовать ключи API только для аутентификации проектов, а не пользователей-людей. [3] [4]
Ключи API для API на основе HTTP можно отправлять несколькими способами: [5]
В строке запроса :
POST /что-то?api_key=abcdef12345 HTTP / 1.1
В качестве заголовка запроса :
GET /something HTTP / 1.1 X-API-ключ : abcdef12345
В виде файла cookie :
GET /something HTTP / 1.1 Cookie : X-API-KEY=abcdef12345
Ключи API обычно не считаются безопасными; они обычно доступны клиентам , что позволяет кому-то легко украсть ключ API. Ключи часто не имеют срока действия, то есть украденный ключ может использоваться неограниченное время, если только он не будет отозван или повторно сгенерирован. [6] Ключи должны быть секретом, известным только клиенту и серверу , поэтому они не должны передаваться по незащищенному каналу и могут считаться безопасными только при использовании в сочетании с другими механизмами безопасности, такими как HTTPS . [5]
При использовании ключей API существует несколько сценариев риска:
Эти риски обычно возникают из-за того, что ключ находится в открытом виде и потенциально доступен злоумышленникам. [2]
В 2017 году Fallible, фирма по обеспечению безопасности из Делавэра, проверила 16 000 приложений Android и выявила более 300 из них, содержащих жестко запрограммированные ключи API для таких сервисов, как Dropbox , Twitter и Slack . [7]