Prevenire l'uso malevolo dagli utenti con token di accesso

1

Quindi ho una pagina web che esegue un'applicazione JavaScript e un servizio web a cui l'applicazione fa richieste HTTP PUT. Il servizio utilizza i token di accesso per verificare l'identità dell'utente, ma ora mi sto grattando la testa su come impedire agli utenti autorizzati di utilizzare l'API in modo inappropriato. Cioè cosa impedisce a un utente malintenzionato di ispezionare semplicemente il traffico in uscita nel proprio browser, copiare l'URL del servizio e il relativo token di accesso e utilizzarlo per invadere le chiamate contro il servizio?

Esiste un modo standard per prevenire questo tipo di abuso? Ho pensato che sarei stato in grado di nascondere o crittografare i token dell'utente in modo che non potessero vederli, ma non sembra possibile.

Cheers!

    
posta C. Russell 27.07.2017 - 00:48
fonte

2 risposte

0

I.e. what’s to stop a malicious user from simply inspecting outgoing traffic in their browser, copying the service url and their access token, and using it to spam calls against the service?

Niente. Un utente ha il pieno controllo dell'applicazione client. Non puoi impedirgli di estrarre il token, modificare il codice JS o semplicemente creare il proprio client personalizzato. Anche se offuscate pesantemente il codice, alla fine possono catturare le richieste nell'API e riprodurle in seguito.

Is there a standard way of preventing this sort of misuse?

Il modo comune per proteggere le API dall'abuso è la limitazione dei tassi. Ad esempio, è possibile limitare il numero consentito di richieste per utente per un determinato periodo di tempo o stabilire limiti basati su indirizzi IP. Tuttavia, non puoi impedirgli di utilizzare l'API dall'esterno dell'app.

Vedi anche:

risposta data 27.07.2017 - 03:39
fonte
0

Il modo standard è di "riproxy" la chiamata dell'API esterna attraverso il tuo server. Viene inoltre utilizzato per fornire l'integrazione dell'API non CORS, nascondere le chiavi dell'API segrete, consentire le modifiche al provider di servizi senza eseguire il refactoring del codice client e la sicurezza.

Poiché tutte le chiamate ora passano attraverso il tuo server, puoi onorarle o rifiutarle secondo necessità, in base all'autenticazione, alla limitazione della velocità o praticamente a qualsiasi altro tipo di regola che puoi inventare e codificare.

Puoi anche implementare token di app e permessi di sincronizzazione in modo che solo la tua app possa utilizzare la "nuova" API che stai (ri) servendo. Senza re-proxy, devi fare affidamento sull'onestà e sulla correttezza degli utenti.

    
risposta data 27.07.2017 - 05:50
fonte

Leggi altre domande sui tag