Bir "widget", ortakları bazı UI görüntülemek ve API bizim çağrı yapmak için web sitelerine gömmek bir komut dosyası tasarlamak zorunda.
Temel olarak, bu sitelerdeki verilerimizi API çağrılarımızda sağladıkları bazı kimliklere dayanarak görüntüler. Bundan kaçınmak istediğimiz, API'yı kötüye kullanan ve kataloğumuzun tamamını kazımak için kullanan birisidir.
Betiğimizi yerleştiren her iş ortağına, API çağrılırken sağlanması gereken bir ortak anahtar verilir. Bir fikir, komut dosyasını yüklerken bu anahtarı eklemelerini istemek olabilir, örneğin:
<script src="//initrode.com/widget/loader.js?key=xxxx"></script>
Bu şekilde komut dosyası isteği anahtar / kaynak IP çiftini kaydetmek ve sonraki anahtar çağrılarını yalnızca anahtar / IP çifti kayıtlı bir eşleştirmeyle (sınırlı bir yaşam süresi ve günlük istek sayısı sınırlamasıyla) eşleştirmek için kullanılabilir.
Eminim iyi bir fikir çünkü açıkçası gizleme yoluyla güvenlik (komut dosyasını yeniden yükleyen biri tamamen atlayacak); ancak erişimi kısıtlamanın başka bir yolunu görmüyorum. Her kullanıcıya, yalnızca iş ortaklarına benzersiz bir anahtar veremiyorum. Tüm kod herkes tarafından kullanılabilir olacağı için özel anahtar sistemi kullanamıyorum. Temel olarak genel bir API'ya erişimi kısıtlar, yani tanımında çelişkilidir.
Bu çözüm hakkında ne düşünüyorsunuz ve bu kısıtlamalarla ne yapardınız?