Angenommen, ich habe eine Website mit vielen Informationen zu unseren Produkten. Ich möchte, dass einige unserer Kunden (einschließlich uns!) In der Lage sind, unsere Produkte nach verschiedenen Methoden zu suchen, einschließlich:Best Practices für sichere APIs?
1) Ziehen von Daten aus AJAX-Aufrufen, die Daten in coolen, JavaScripty-ways zurückgeben 2) Erstellen von iPhone-Anwendungen, die diese Daten verwenden; 3) Andere Webanwendungen verwenden diese Daten für ihr eigenes Ende.
Normalerweise würde ich nur eine API erstellen und damit fertig sein. Diese Daten sind jedoch eher vertraulich - das heißt, wir wollen nicht, dass unsere Wettbewerber jeden Morgen alle unsere Produkte nachschlagen und dann automatisch ihre Preise unterbieten. Und wir möchten auch sehen können, wer das System missbraucht. Wenn also jemand zehn Millionen komplexe Aufrufe pro Tag an unsere API sendet und unseren Server in die Knie zwingt, können wir sie abschalten.
Mein nächster logischer Schritt wäre dann, einen Entwicklerschlüssel zu erstellen, um den Zugriff zu beschränken - was für Web-Anwendungen gut wäre, aber nicht so sehr für AJAX-Aufrufe. (So wie ich es sehe, müssten sie den Schlüssel im JavaScript bereitstellen, das im Klartext und leicht zu sehen ist, und daher gibt es überhaupt keine Sicherheit. Insbesondere, wenn wir die Schlüssel unserer Entwickler auf unserer Website verwenden würden um diese AJAX-Anrufe zu machen.)
Also meine Frage: nachdem ich mich eine Weile bei Oauth und OpenID umgesehen habe, bin ich mir nicht sicher, ob es eine Lösung gibt, die alle drei der oben genannten Probleme behandeln würde. Gibt es eine Art kanonische "Best Practices" für Entwicklerschlüssel, oder können Oauth und OpenID AJAX-Aufrufe auf eine Art handhaben, die ich noch nicht gelernt habe, oder fehlt mir etwas völlig?
Aber wie kann dieser API-Proxyserver gesichert werden, um zu verhindern, dass Angreifer ihn missbrauchen? – Constantin