Zabezpieczenie API

Cześć,
Ostatnio zastanawiałem się nad zabezpieczeniem API, w frameworkach SPA (js).
Jak wiemy nagłówki i parametry ajaxa można podejrzeć, i co za tym idzie zobaczyć API-KEY.
Bardzo podoba mi się rozwiązanie od googla, że podajesz domenę na jakiej jest wykorzystywane API.
I tak sobie ostatnio myślałem że do bazy z kluczami API, dorobić kolumnę albo od IP serwera który wysyła żądanie, albo nazwę domeny, i to załatwiło by sprawę uzyskiwania dostępu do API z różnych miejsc dla jednego klucza. Np. API Allegro można przeglądać do woli, bez klucza API :smile: . Zastanawiałem się ostatnio nad tym że ktoś może wyciągać sobie z API co chce, mowa tutaj oczywiście o API, które mają kilka poważnych błędów. Np. Załóżmy że mamy serwis z potężną bazą, jest wiele relacji(czasami trudno zapanować nad tym, np. gem jsonapi-resources, trzeba strasznie uważać) i błąd polega na tym że został źle napisany skrypt od paginatora( maksymalna liczba wyników na stronę). Ktoś wklepuje do API że chce pierwszą stronę na której ma być 3 miliony rekordów a do tego inkluduje wszystkie relacje, i mamy serwer zwieszony na kilkanaście sekund, albo minut :smile: To rozwiązanie które napisałem jest chyba ok? Może macie jakieś przydatne tutoriale dotyczące zabezpieczania API(railscast widziałem)?