Protezione di una chiave API in un'estensione Web

3

Sto costruendo un'estensione web che sarà un wrapper per un'API pubblica. Al momento non ci sono livelli a pagamento per l'API, ma sto cercando di proteggere la chiave API in modo che non venga rubata e utilizzata al di fuori della mia app. Vorrei evitare di negare le mie autorizzazioni.

Al momento ho 2 idee che mi permetterebbero di fare una cosa del genere:

  1. Avere la chiave API in chiaro nell'estensione web e sperare che le persone siano abbastanza brave da non rubarla usando CRX Viewer (improbabile).

  2. Proxy tutte le richieste API attraverso un server web e aggiungi il lato server API key, restituendo i risultati dall'API tramite il mio proxy al client.

Sono un fan di Node.js e vorrei perseguire il numero 2. Come faccio a proteggere la mia API in Node.js in modo che le persone non possano semplicemente reindirizzare le loro richieste attraverso il mio server all'API invece che direttamente all'API con una chiave rubata?

    
posta Jay Gould 06.03.2018 - 21:22
fonte

2 risposte

1

Se devi limitare l'utilizzo della tua chiave, devi limitare l'utilizzo del tuo proxy.

Il modo tipico se gli utenti devono registrarsi (passando alcuni captcha per impedire ai robot ingenui di effettuare la registrazione di massa) e rilasciare un token per utente. Un server serve solo un portatore di un token valido. Puoi limitare l'utilizzo per token, o addirittura revocare e vietare i token perduti e abusati.

Questo rende l'onboarding più difficile e l'adozione più bassa.

Ovviamente, idealmente ogni utente può semplicemente ottenere la propria chiave API, incollarla in una casella delle impostazioni della propria estensione e liberarsi della necessità di eseguire un server proxy. Se questo è anche fattibile, esplorerei in questo modo per primo.

    
risposta data 06.04.2018 - 03:38
fonte
0

Se non fraintendiamo la domanda, un approccio semplice a questo sarebbe quello di passare la chiave API al wrapper quando lo si utilizza su un canale sicuro. Come si nota, inserendo la chiave nel server, non si è veramente risolto nulla di ciò che è ancora necessario per proteggere il server. Se richiedi che la chiave venga specificata al momento dell'utilizzo dell'estensione web, rendi anche questa estensione web utilizzabile da altri.

    
risposta data 06.03.2018 - 21:46
fonte

Leggi altre domande sui tag