Güvenli API'ler için En İyi Uygulamalar?

3 Cevap php

Diyelim ki Ürünlerimizle ilgili birçok bilgi içeren bir web sitesi var diyelim. Ben de dahil olmak üzere, çeşitli yöntemler için bizim ürünleri bakmak mümkün (! Bize dahil) bazı müşterilerimiz istiyorum:

1) Pulling data from AJAX calls that return data in cool, JavaScripty-ways 2) Creating iPhone applications that use that data; 3) Having other web applications use that data for their own end.

Normalde, ben sadece bir API oluşturmak istiyorum ve onunla yapılabilir. Ancak bu veriler, aslında hafif gizli - bizim yarışmacılar her sabah tüm ürünleri bakmak ve daha sonra otomatik olarak bizi zayıflatmaya kendi fiyatlarını ayarlamak mümkün istemiyorum demek olduğu. Ve biz de sistemi kötüye olabilir kim bakmak mümkün olmak istiyorum, bu yüzden kimse bizim API on milyon karmaşık çağrı bir gün yapma ve sunucu bogging eğer, biz onları kesebilirsiniz.

Benim bir sonraki mantıklı adım erişimini kısıtlamak için bir geliştiricilerin anahtarı oluşturmak için daha sonra olacak - web uygulamaları için para cezası işe yarayacağını, ancak herhangi bir AJAX için çok değil çağırır. (Gördüğüm kadarıyla, onlar düz metin olarak ve kolaylıkla görülür ve dolayısıyla hiçbir güvenlik bizim sitemizde kendi geliştiricilerin 'tuşlarını kullanarak olurdu Özellikle eğer. Tüm aslında orada JavaScript anahtarı sağlamanız gerekir ediyorum Bu AJAX çağrıları yapmak için.)

Yani benim soru: bir süre için OAuth ve OpenID de etrafa sonra, ben yukarıdaki üç idare edecek bir çözüm olduğundan emin değilim. Geliştiricilerin 'tuşları için kanonik "en iyi uygulamalar" çeşit var mı, ya da OAuth ve OpenID kolu AJAX ben grok henüz, ya da ben tamamen bir şey eksik bazı moda kolayca çağırır?

3 Cevap

Ben 2 bacaklı OAuth sen # 2 ve # 3 tatmin etmek istediklerini olduğunu düşünüyorum. # 1 için yerine müşterinin kendi web uygulaması üzerinden proxy yerine, uygulamanız karşı doğrudan bu istekleri JS istekleri olabilir yapma öneririm.

Bir çözüm yarıda bir API anahtarı gerektiren etmektir; ve o dilediğini aslında AJAX ile doğrudan kullanmaz kullanır talep; ancak bir sunucu tarafı isteği, örneğin, onların çağrıları sarın:

AJAX -> customer server -> your server -> customer server -> user

Ilgili taraflar için basit bir PHP API oluşturarak çok zor olmamalı, ve kendi iPhone uygulamaları belli ki kendi API anahtarı ile orta adam, nakliye kesip olacaktır.

OAuth ve OpenID AJAX ile yapmak için çok fazla olası değildir, doğrudan çağırır. Büyük olasılıkla, bir çerez denetler AJAX işleyicisi önünde yetkilendirme filtre çeşit olacak ve belki de bu tanımlama bir OpenID kimlik doğrulama sonucu olarak ayarlanır.

Bu bir soruya iniyor gibi görünüyor "how do I prevent screen scraping." Yalnızca giriş müşterilerin fiyatları görmek için olsun, bu bir şey, ama en çok perakende satış siteleri ve müşteri kaydolma için bariyer gibisin varsayarak gerçekten yardımcı olmadığını, mümkün olduğunca düşük.

Ve, hey, sizin fiyatlarınız aren't mevcut, Froogle'a veya Nextag veya Sepetinizdeki gibi arama motorlarında göstermek için alamadım. Ama bu bir iş stratejisi karar değil, bir programlama bir daha bulunuyor.