Protezione delle chiavi API

2

Questo è stato spostato da SO in quanto è più una questione di progettazione che di codice.

In molte applicazioni, siti web / programmi di terze parti possono accedere al sito web tramite una chiave.

Ad esempio, un'applicazione Web ospita applicazioni ognuna delle quali ha una chiave API univoca. Queste chiavi vengono rilasciate ai vari sviluppatori per garantire che non facciano troppe richieste in base al loro contratto.

Tuttavia, le applicazioni di terze parti spesso effettuano richieste nel modulo:

http://www.thewebapplication.com/my.api?key=TheKey&parameter=SomeValue

Questi possono essere visti da una miriade di tecnologie (violinista, ficcanaso del traffico). Ancora peggio queste richieste possono essere inserite in Javascript e rese disponibili a tutti. Come puoi progettare un sistema API che aiuti a proteggere le chiavi API dei tuoi clienti?

    
posta Liath 18.03.2014 - 13:09
fonte

1 risposta

8

Invece di richiedere la chiave effettiva, richiedi qualcosa che solo il proprietario della chiave può fornire, ma che non rivela il valore della chiave effettiva.

La solita soluzione è non aspettarsi la chiave, ma il valore di una funzione di hash unidirezionale sul tasto + qualcosa di arbitrario. Ad esempio, lo sviluppatore può generare un valore nonce (qualcosa che non viene mai inviato più di una volta), combinarlo con la chiave, cancellarne il risultato e quindi inviare l'hash combinato + il valore nonce, ma non la chiave. La tua applicazione dovrebbe quindi verificare che l'hash sia corretto e che il valore nonce non sia stato usato prima (e che il limite del servizio non sia stato raggiunto). Ciò consente al cliente di effettuare tutte le richieste che desidera (all'interno del proprio contratto), ma gli intercettatori non possono sottrarre le credenziali ai servizi di spoon dal contratto.

    
risposta data 18.03.2014 - 13:13
fonte

Leggi altre domande sui tag