Ich muss ein "Widget" entwerfen, ein Skript, das Partner in ihre Websites einbetten, um eine Benutzeroberfläche anzuzeigen und unsere API aufzurufen.
Grundsätzlich werden unsere Daten auf diesen Websites basierend auf einigen IDs angezeigt, die sie in unseren API-Aufrufen bereitstellen. Was wir vermeiden möchten, ist, dass jemand die API missbraucht und sie verwendet, um den gesamten Katalog zu kratzen.
Jeder Partner, der unser Skript einbettet, erhält einen öffentlichen Schlüssel, der beim Aufrufen der API angegeben werden muss. Eine Idee wäre, sie zu bitten, diesen Schlüssel beim Laden des Skripts anzuhängen, z.
<script src="//initrode.com/widget/loader.js?key=xxxx"></script>
Auf diese Weise kann die Anforderung für das Skript verwendet werden, um das Schlüssel / Quell-IP-Paar zu registrieren und nachfolgende API-Aufrufe nur zu beantworten, wenn das Schlüssel / IP-Paar mit einem registrierten übereinstimmt (mit einer begrenzten Lebensdauer und einer Begrenzung der Anforderungen pro Tag).
Ich bin mir nicht sicher, ob es eine gute Idee ist, da es offensichtlich Sicherheit durch Verschleierung ist (jemand, der das Skript neu lädt, wird es vollständig umgehen); Ich sehe jedoch keine andere Möglichkeit, den Zugriff einzuschränken. Ich kann nicht jedem Benutzer einen eindeutigen Schlüssel zur Verfügung stellen, nur Partnern. Ich kann kein Private-Key-System verwenden, da der gesamte Code für jedermann verfügbar ist. Grundsätzlich wird der Zugriff auf eine öffentliche API eingeschränkt, was in ihrer Definition widersprüchlich ist.
Was halten Sie von dieser Lösung und was würden Sie mit diesen Einschränkungen tun?