2016-06-20 11 views
1

Ich mache ein API-Backend, das eine andere API nutzt, zum Beispiel Twitter. (Bitte beachten Sie, dass die aktuelle API nicht twitter ist, sondern ich sie als Beispiel verwende).verwendet Access-Control-allow-origin genug, um den Missbrauch einer API zu verhindern?

Angenommen, Twitter hat eine Begrenzung der Anzahl der Anrufe, die an die API getätigt werden können, und oberhalb dieser Grenze beginnt es, meine Kreditkarte zu belasten. Deshalb ist es sehr wichtig für mich, dass niemand meine API missbraucht.

Ich möchte verhindern, dass Leute meinen Frontend-Code ansehen und sehen, welchen Endpunkt er trifft, denn wenn eine böswillige Person dies tun würde, würde ich sehr schnell über das Limit gehen und $$$ zahlen müssen.

Mein Frontend-Code verwendet ein get Aufruf mybackend.com/twitter/api

es genug ist einfach ein Access-Control-Allow-Origin Header zu meinem Backend hinzufügen?

headers['Access-Control-Allow-Origin'] = 'myfrontend.com' 

Der Grund Ich frage dies, weil ich, dass mybackend.com/twitter/api arbeitete direkt in den Browser eingeben bemerkt, was nicht, was ich erwarten würde, wenn ich access-control-allow-origin Satz zu einer bestimmten Website habe.

Mache ich etwas falsch? Wie verhindere ich, dass jemand einfach ein Skript schreibt, um mein Backend zu treffen, da es klar ist, dass es nur in die URL meines Browsers eintippt, obwohl ich einen Header access-control-allow-origin habe.

Antwort

0

Es gibt zwei mögliche Lösungen für Ihr Problem. Sie können versuchen, eine Anforderungssignatur für Ihre API zu implementieren, um genau zu wissen, aus welcher Quelle sie in Ihrem Back-End stammt. Sie können sich ansehen, wie das funktioniert here. Die zweite Option, und für mich eine Lösung, die Ihrem Problem besser entspricht, ist die Einrichtung eines Denial-of-Service-Ansatzes auf Ihrem Load Balancer-Server, um mehrfache Anfragen von demselben Ursprung zu verhindern, und so lassen Sie sich nicht davon abhalten Diese bösartigen Anfragen treffen Ihr Backend.