Przepraszam @MarkAmery i Eugene, ale to jest niepoprawne.
Twoja aplikacja js + html (klient) działająca w przeglądarce MOŻE zostać skonfigurowana tak, aby wykluczyć nieautoryzowane bezpośrednie wywołania interfejsu API w następujący sposób:
- Pierwszy krok: skonfiguruj interfejs API tak, aby wymagał uwierzytelniania. Klient musi najpierw uwierzytelnić się przez serwer (lub jakiegoś innego serwera zabezpieczeń) , na przykład prosząc ludzkiego użytkownika, aby zapewnić prawidłowe hasło.
Przed uwierzytelnieniem wywołania API nie są akceptowane.
Podczas uwierzytelniania zwracany jest „token”.
Po uwierzytelnieniu akceptowane będą tylko wywołania API z „tokenem” uwierzytelniania.
Oczywiście na tym etapie tylko upoważnieni użytkownicy, którzy mają hasło, mogą uzyskać dostęp do API, chociaż jeśli są programistami debugującymi aplikację, mogą uzyskać do niej bezpośredni dostęp w celach testowych.
- Drugi krok: Teraz skonfiguruj dodatkowy interfejs API bezpieczeństwa, który ma zostać wywołany w krótkim czasie po pierwszym zażądaniu klienta aplikacji js + html z serwera. To „wywołanie zwrotne” powie serwerowi, że klient został pomyślnie pobrany. Ogranicz wywołania interfejsu API REST do działania tylko wtedy, gdy żądanie klienta zostało wysłane niedawno i pomyślnie.
Teraz, aby używać twojego API, muszą najpierw pobrać klienta i faktycznie uruchomić go w przeglądarce. Dopiero po pomyślnym odebraniu wywołania zwrotnego, a następnie wpisie użytkownika w krótkim czasie, API będzie akceptować wywołania.
Nie musisz się więc martwić, że może to być nieautoryzowany użytkownik bez poświadczeń.
(Tytuł pytania „Jak zabezpieczyć wywołania REST API” iz większości z tego, co mówisz, jest Twoim głównym zmartwieniem, a nie dosłownym pytaniem, JAK nazywa się twoje API, ale raczej KOGO, prawda? )