Diciamo che ho un sito Web che ha molte informazioni sui nostri prodotti. Mi piacerebbe alcuni dei nostri clienti per essere in grado di cercare i nostri prodotti per i vari metodi, tra cui (noi compresi!):Best practice per le API sicure?
1) L'estrazione di dati da AJAX chiamate che i dati di ritorno in fresco, JavaScripty vie 2) Creazione di applicazioni iPhone che utilizzano tali dati; 3) Avere altre applicazioni Web usa questi dati per la propria estremità.
Normalmente, vorrei solo creare un'API e averne fatto. Tuttavia, questi dati sono di fatto moderatamente riservati - il che vuol dire che non vogliamo che i nostri concorrenti siano in grado di cercare tutti i nostri prodotti ogni mattina e quindi impostare automaticamente i loro prezzi in modo da indebolirci. E vogliamo anche essere in grado di vedere chi potrebbe abusare del sistema, quindi se qualcuno fa dieci milioni di chiamate complesse alla nostra API al giorno e abbassa il nostro server, possiamo eliminarle.
Il mio prossimo passo logico sarebbe quindi quello di creare una chiave per gli sviluppatori per limitare l'accesso - il che andrebbe bene per le app Web, ma non tanto per le chiamate AJAX. (Per come la vedo io, avrebbero bisogno di fornire la chiave nel codice JavaScript, che è in chiaro e facilmente visibile, e quindi in realtà non c'è alcuna sicurezza, in particolare se dovessimo usare le chiavi dei nostri sviluppatori sul nostro sito per effettuare queste chiamate AJAX.)
Quindi la mia domanda: dopo aver guardato intorno a Oauth e OpenID per qualche tempo, non sono sicuro che ci sia una soluzione che gestirà tutte e tre le precedenti. Esiste una sorta di "best practice" canoniche per le chiavi degli sviluppatori, oppure Oauth e OpenID gestiscono le chiamate AJAX in un modo che non ho ancora trovato, o mi manca qualcosa del tutto?
Ma come è possibile proteggere questo server proxy API per impedire all'utente malintenzionato di abusarne? – Constantin