Modello di progettazione API - Crittografia lato client

6

Attualmente sto progettando un modello API da utilizzare. Un utente avrà un 'secret_api_key' e un 'public_api_key'. Manderanno una richiesta al mio server con la chiave pubblica, i dati del modulo e poi un hash. L'hash è i dati del modulo crittografati con "secret_api_key".

Questo è così che il server ricreerà questo hash dal momento che conosce il 'secret_api_key' e se gli hash sono uguali allora accetta la richiesta, altrimenti nega.

Il mio problema è che se qualcuno dovesse fare ciò utilizzando JavaScript, sarebbe necessario crittografarlo nel browser in modo che avessero bisogno di "secret_api_key" per cancellarlo. Ma il 'secret_api_key' è pensato per essere tenuto lontano dagli occhi del pubblico, quindi chiunque sarebbe in grado di guardare lo script e vedere la chiave segreta.

È un modo sbagliato di farlo? Onestamente non riesco a pensare a un modo in cui tu possa utilizzare la mia API all'interno di un browser utilizzando JavaScript (che sarebbe il metodo principale in cui le persone utilizzerebbero la mia API)

So che con OAuth ottieni un 'access_token' che invii semplicemente con una richiesta, sicuramente qualcuno potrebbe usare uno sniffer di traffico e inviare di nuovo richieste con lo stesso token di accesso? O funziona OAuth in modo diverso?

Qualsiasi aiuto o suggerimento sarebbe molto apprezzato.

Grazie.

    
posta Tom O 27.11.2012 - 14:08
fonte

1 risposta

1

Avresti bisogno di una chiave a livello di sessione che potrebbe essere data al javascript non affidabile. Fondamentalmente un sito che esegue l'API dovrebbe avere la possibilità di richiedere una singola sessione per ciascuno degli utenti dalla loro chiave API e quindi la sessione dell'utente dovrebbe usare quella chiave. Ciò consente di mantenere la fiducia tra te e il contenuto di hosting del server, consentendo allo stesso tempo all'utente di eseguire operazioni basate sulla chiave del server senza divulgarla.

    
risposta data 27.11.2012 - 17:55
fonte

Leggi altre domande sui tag