
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
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