Viene rinviato al browser perché è essenziale farlo in questo modo.
Potrebbe essere pazzesco, ma l'intera sicurezza OAuth / OpenId si basa sul fatto che il tuo browser eseguirà il reindirizzamento corretto.
Analizziamo un attacco se non utilizzi il browser come reindirizzamento, ma prima definiamo una versione semplificata del "framework" OAuth per il nostro esempio.
- Client: l'applicazione a cui desideri connetterti
- Browser: il tuo browser ...
- Provider: il provider OAuth (es .: Google o Facebook)
- Male: l'attaccante.
Il flusso normale
- Browser chiedi al client di accedere
- Il client reindirizza il browser al provider
- Provider autentica il browser quindi reindirizza a Client con token
- Il client comunica con il provider che fornisce il token per l'autorizzazione.
- Client concede l'autorizzazione al browser.
Il tuo flusso
- Browser chiedi al client di accedere
- Il client reindirizza il browser al provider
- Provider autentica il browser e invia token al client dandogli l'autorizzazione
- Client concede l'autorizzazione al browser
Il problema qui è che il client non è sicuro che il browser con cui sta comunicando sia lo stesso browser che si autentica con il provider.
Un attacco al tuo flusso
- Accesso al browser Male per qualche cattiva ragione
- Il male impersona il browser e chiede al cliente di accedere.
- Il client invia il link di reindirizzamento a Evil
- Evil inoltra il link al browser che lo reindirizza al provider
- Il provider autentica il browser e invia il token al Cliente dandogli l'autorizzazione
- Il client concede l'autorizzazione al malvagio pensando che sia Browser
Vedi il problema nell'ultimo passaggio?
Questo non si sarebbe verificato se si stesse utilizzando un reindirizzamento del browser per inviare il token al client. Utilizzando un reindirizzamento del browser, ci si assicura che il browser che si autentica con il provider sia lo stesso browser che sta tentando di ottenere diritti di autorizzazione con il client.
Questo è un passaggio cruciale. Soprattutto perché molti Provider invieranno automaticamente il token dopo la prima volta se effettui il login. Quindi, Evil potrebbe ottenere l'accesso al tuo account solo visitando la sua pagina e non lo sapresti nemmeno.
Lo stesso attacco con flusso normale
- Accesso al browser Male per qualche cattiva ragione
- Il male impersona il browser e chiede al cliente di accedere.
- Il client invia il link di reindirizzamento a Evil
- Evil inoltra il link al browser che lo reindirizza al provider
- Provider autentica il browser quindi reindirizza a Client con token
- Il client comunica con il provider che fornisce il token per l'autorizzazione.
- Client concede l'autorizzazione al browser.
Qui il male è stato eclissato alla fine a causa del reindirizzamento. Questo è il motivo per cui i protocolli eseguono così tanti controlli sull'URL di reindirizzamento per assicurarsi che non vengano reindirizzati a un sito dannoso che ruba il token di autorizzazione.
OAuth / OpenId ti protegge nuovamente dal tentativo di phishing. Ma possono farlo solo perché il tuo browser sta facendo il reindirizzamento giusto. Sull'app desktop / mobile questo non funziona, quindi perché i protocolli sono meno sicuri sull'app desktop / mobile.
In particolare, protegge il Cliente dal tentativo di phishing. Il cliente deve prendere la decisione molto difficile: il browser che richiede l'autorizzazione è lo stesso del browser che si autentica con il provider? E l'unica cosa che aiuta il cliente a farlo è il reindirizzamento e il fatto che il tuo browser sia sicuro.
Dal momento che protegge direttamente il cliente dal phishing, protegge indirettamente te.