Zasięg

Grow

Manage

Automate

Zasięg

Grow

Manage

Automate

Biała lista IP dla kluczy API

Email

1 min read

Biała lista IP dla kluczy API

Email

1 min read

Biała lista IP dla kluczy API

Istnieje wiele sposobów na zbudowanie uwierzytelniania w produkcie opartym na API, takim jak SparkPost, a ten, który wybraliśmy na początku, to użycie kluczy API. Wstrzykiwanie klucza API jako surowego nagłówka Authorization lub za pomocą standardowego uwierzytelniania HTTP Basic sprawia, że korzystanie z naszych interfejsów API jest bardzo proste. Klucze API tego typu są powszechnym standardem dla usług internetowych, ale jak bezpieczny jest ten system?

Istnieje wiele sposobów na tworzenie uwierzytelnienia w produkcie API-first jak SparkPost, a ten, który wybraliśmy na wczesnym etapie, to użycie kluczy API. Wstrzyknięcie klucza API jako surowego nagłówka Authorization lub za pośrednictwem standardowego uwierzytelnienia HTTP Basic sprawia, że nasze API są bardzo łatwe w użyciu. Takie klucze API są standardem dla usług internetowych, ale jak bezpieczny jest ten system?

Ryzyka

Kiedy korzystasz z jakiejkolwiek usługi internetowej, jeśli atakujący zdobędzie twój klucz API, może działać w twoim imieniu i robić rzeczy takie jak (w naszym przypadku):

  • wysyłać swoje e-maile za darmo za pośrednictwem twojego konta

  • pobierać listę twoich odbiorców i przekazywać ją do spamerów (jeśli sami nie są spamerami)

  • edytować twoje szablony, aby wstrzyknąć linki phishingowe

  • wysyłać spam lub phishing w twoim imieniu

Każdy z tych rezultatów może być bardzo szkodliwy dla twojej reputacji i dla twojego biznesu, a w przypadku phishingu potencjalnie bezpośrednio zaszkodzić twoim użytkownikom końcowym. Dlatego niezwykle ważne jest, aby upewnić się, że nikt nie jest w stanie odkryć twojego klucza API.

Szanse

Czy słyszałem bruteforce? Nasze klucze API są losowo generowanymi 40-znakowymi ciągami szesnastkowymi. To daje w sumie 1.4615e+48 kluczy API. Gdyby wszystkie 3 miliardy komputerów i smartfonów na świecie próbowały 100 kluczy API na sekundę, zakładając, że nasze serwery by to umożliwiły, przejście przez wszystkie możliwe klucze API zajęłoby więcej niż 150,000,000,000,000,000,000,000,000,000 lat. Więc brute force na kluczu API po prostu nie ma sensu.

Jak ktoś może znaleźć twój klucz API? Ponieważ klucz jest przekazywany jako nagłówek, może być odczytany przy użyciu ataków typu man-in-the-middle, dlatego zawsze powinieneś upewnić się, że klient sprawdza certyfikaty SSL przy łączeniu się z naszymi API (to główny powód, dla którego wymagamy https dla połączeń API). Ponadto, jeśli nieostrożnie korzystasz z publicznych repozytoriów, takich jak github, twój klucz API może łatwo zostać ujawniony. To nie jest problem akademicki: są znane boty przeszukujące github w poszukiwaniu kluczy API i były udane ataki przez ten wektor.

Czy słyszałem bruteforce? Nasze klucze API są losowo generowanymi 40-znakowymi ciągami szesnastkowymi. To daje w sumie 1.4615e+48 kluczy API. Gdyby wszystkie 3 miliardy komputerów i smartfonów na świecie próbowały 100 kluczy API na sekundę, zakładając, że nasze serwery by to umożliwiły, przejście przez wszystkie możliwe klucze API zajęłoby więcej niż 150,000,000,000,000,000,000,000,000,000 lat. Więc brute force na kluczu API po prostu nie ma sensu.

Jak ktoś może znaleźć twój klucz API? Ponieważ klucz jest przekazywany jako nagłówek, może być odczytany przy użyciu ataków typu man-in-the-middle, dlatego zawsze powinieneś upewnić się, że klient sprawdza certyfikaty SSL przy łączeniu się z naszymi API (to główny powód, dla którego wymagamy https dla połączeń API). Ponadto, jeśli nieostrożnie korzystasz z publicznych repozytoriów, takich jak github, twój klucz API może łatwo zostać ujawniony. To nie jest problem akademicki: są znane boty przeszukujące github w poszukiwaniu kluczy API i były udane ataki przez ten wektor.

Czy słyszałem bruteforce? Nasze klucze API są losowo generowanymi 40-znakowymi ciągami szesnastkowymi. To daje w sumie 1.4615e+48 kluczy API. Gdyby wszystkie 3 miliardy komputerów i smartfonów na świecie próbowały 100 kluczy API na sekundę, zakładając, że nasze serwery by to umożliwiły, przejście przez wszystkie możliwe klucze API zajęłoby więcej niż 150,000,000,000,000,000,000,000,000,000 lat. Więc brute force na kluczu API po prostu nie ma sensu.

Jak ktoś może znaleźć twój klucz API? Ponieważ klucz jest przekazywany jako nagłówek, może być odczytany przy użyciu ataków typu man-in-the-middle, dlatego zawsze powinieneś upewnić się, że klient sprawdza certyfikaty SSL przy łączeniu się z naszymi API (to główny powód, dla którego wymagamy https dla połączeń API). Ponadto, jeśli nieostrożnie korzystasz z publicznych repozytoriów, takich jak github, twój klucz API może łatwo zostać ujawniony. To nie jest problem akademicki: są znane boty przeszukujące github w poszukiwaniu kluczy API i były udane ataki przez ten wektor.

IP whitelisting na ratunek

Kiedy tworzysz klucz API, możesz teraz określić listę IP, które są autoryzowane do korzystania z tego klucza. Możesz określić kilka IP, a także bloki IP, używając notacji CIDR, więc nie musisz wymieniać swoich serwerów indywidualnie. Gdy klucz API jest używany, dla REST API lub SMTP, dopasujemy łączące się IP do tej listy, aby zezwolić na dostęp lub go odmówić.

Dzięki tej funkcji, nawet jeśli Twój klucz API zostanie znaleziony lub skradziony, tylko Twoje serwery będą mogły go używać. Ze względu na ryzyko i łatwość jego skonfigurowania, zdecydowanie zalecamy wszystkim naszym klientom korzystanie z tej funkcji.

Ostatnie słowa

Kilka osobistych rekomendacji dotyczących bezpieczeństwa:

  • Nie przechowuj swoich kluczy API w kodzie. Istnieje wiele korzyści z przechowywania ich jako zmienne środowiskowe, tak jak robi to Heroku

  • Możesz tworzyć nielimitowaną ilość kluczy API, a dla bezpieczeństwa najlepiej podzielić obowiązki pomiędzy kilka kluczy API, zamiast używać jednego klucza uniwersalnego. Umożliwiłoby to również posiadanie różnych białych list IP dla każdego klucza, dla jeszcze lepszego rozdzielenia zadań

  • Jeśli współpracujesz z podmiotami trzecimi, nie udostępniaj swojego klucza API, ale stwórz dla nich nowy, z tylko niezbędnymi uprawnieniami, i przypisany do ich IP

  • Ponieważ klucze API mogą być tworzone tylko poprzez interfejs użytkownika, włączenie dwuskładnikowego uwierzytelniania na koncie SparkPost jest koniecznością i zajmuje tylko 2 minuty

Połączmy Cię z ekspertem Bird.
Zobacz pełną moc Bird w 30 minut.

Przesyłając, zgadzasz się, że Bird może kontaktować się z Tobą w sprawie naszych produktów i usług.

Możesz zrezygnować z subskrypcji w dowolnym momencie. Zobacz Privacy Statement firmy Bird, aby uzyskać szczegóły dotyczące przetwarzania danych.

Company

Biuletyn

Bądź na bieżąco z Bird dzięki cotygodniowym aktualizacjom do Twojej skrzynki odbiorczej.

Przesyłając, zgadzasz się, że Bird może kontaktować się z Tobą w sprawie naszych produktów i usług.

Możesz zrezygnować z subskrypcji w dowolnym momencie. Zobacz Privacy Statement firmy Bird, aby uzyskać szczegóły dotyczące przetwarzania danych.

Połączmy Cię z ekspertem Bird.
Zobacz pełną moc Bird w 30 minut.

Przesyłając, zgadzasz się, że Bird może kontaktować się z Tobą w sprawie naszych produktów i usług.

Możesz zrezygnować z subskrypcji w dowolnym momencie. Zobacz Privacy Statement firmy Bird, aby uzyskać szczegóły dotyczące przetwarzania danych.

Company

Biuletyn

Bądź na bieżąco z Bird dzięki cotygodniowym aktualizacjom do Twojej skrzynki odbiorczej.

Przesyłając, zgadzasz się, że Bird może kontaktować się z Tobą w sprawie naszych produktów i usług.

Możesz zrezygnować z subskrypcji w dowolnym momencie. Zobacz Privacy Statement firmy Bird, aby uzyskać szczegóły dotyczące przetwarzania danych.

Połączmy Cię z ekspertem Bird.
Zobacz pełną moc Bird w 30 minut.

Przesyłając, zgadzasz się, że Bird może kontaktować się z Tobą w sprawie naszych produktów i usług.

Możesz zrezygnować z subskrypcji w dowolnym momencie. Zobacz Privacy Statement firmy Bird, aby uzyskać szczegóły dotyczące przetwarzania danych.

R

Reach

G

Grow

M

Manage

A

Automate

Company

Biuletyn

Bądź na bieżąco z Bird dzięki cotygodniowym aktualizacjom do Twojej skrzynki odbiorczej.

Przesyłając, zgadzasz się, że Bird może kontaktować się z Tobą w sprawie naszych produktów i usług.

Możesz zrezygnować z subskrypcji w dowolnym momencie. Zobacz Privacy Statement firmy Bird, aby uzyskać szczegóły dotyczące przetwarzania danych.