L'autenticazione tramite Facebook / Google è considerata una buona pratica?

47

Molti servizi, siti e applicazioni offrono l'opzione 'login con Facebook' o 'login con Google'. Per molti siti, il browser apre una finestra separata in cui è possibile immettere nome utente e password. In questo modo, puoi controllare l'URL e convincerti che l'origine è davvero Google / Facebook / qualunque. L'accesso a questa finestra dovrebbe essere sicuro e non c'è motivo di preoccuparsi (a parte eventuali problemi di privacy che potresti avere).

Tuttavia, questo non è sempre il caso. Anche se non riesco a trovarli ora, sono abbastanza sicuro che ci sono alcuni siti che richiedono il login con il tuo account Facebook / Google sul loro sito (quindi l'URL mostrato non è Facebook / Google). Sono sicuro che ci sono alcune applicazioni desktop che fanno altrettanto. Un esempio che posso dare è l'esperienza GeForce di Nvidia. A parte il ridicolo di dover accedere su Google o Facebook per aggiornare un driver, questo non sembra essere una buona pratica, dal momento che non posso controllare se effettivamente effettuo l'accesso su Google o che la finestra di accesso è falsificata.

Ho letto un paio di volte che l'utilizzo di altri servizi per l'accesso è considerato una buona pratica. È vero? Posso vedere alcuni problemi seri con esso.

    
posta Ruben 10.03.2017 - 10:55
fonte

5 risposte

33

I am quite sure that there are some sites which require you to login with your facebook/google account on their site (so the URL shown is not facebook/google). I am sure there are some desktop application which do this as well.

Questa è una pratica molto negativa per i siti Web, perché OAuth / OpenID (che sono protocolli utilizzati per delegare l'autenticazione) è progettato per aggirare quell'esatto caso d'uso. Ma non c'è altro modo per farlo nelle applicazioni desktop, perché le applicazioni desktop non hanno funzionalità di reindirizzamento.

Una pagina web può inoltrarti all'autenticazione di google o facebook, dove puoi inserire le tue credenziali, e poi quando effettui l'autenticazione con successo, Google / Facebook può reindirizzare verso il luogo da cui provieni.

Questo è impossibile da fare in un'applicazione desktop. Un modo per aggirare è l'applicazione desktop per aprire un browser Web in cui si autentica con il proprio provider di autenticazione (Google / Facebook), e alcuni eventi magici dietro le quinte possono quindi autenticarsi all'applicazione desktop. Ma in generale questo è un problema irrisolto: dovrai semplicemente fidarti dell'applicazione desktop per non rubare le tue credenziali. Infatti, l'apertura di un browser web non risolve il problema; ora ti stai semplicemente affidando al browser per non rubare le tue credenziali (anche il browser è un'applicazione desktop!)

I have read a couple of times that using other services to login is considered good practice. Is this true?

È considerato una buona pratica perché

  1. È facile da usare: gli utenti non devono ricordare un centinaio di credenziali diverse

  2. Nel complesso offre una maggiore sicurezza - non devi fidarti di cento diverse implementazioni e sperare che ogni sito sia privo di bug e memorizzi la tua password in modo sicuro - devi solo fidarti di Google, o di Facebook, per prenditi cura della sicurezza E sono molto più capaci di farlo rispetto al tuo nipote adolescente che ha scritto ancora un altro sistema di login per il suo nuovo sito.

Ovviamente significa anche che ora stai mettendo tutte le uova in un paniere. Se qualcuno viola il tuo account Google / Facebook, sei molto più problematico se usi quell'account per autenticare su un centinaio di altri siti. Inoltre, ci sono problemi di privacy nel permettere al tuo provider di autenticazione di sapere quali siti visiti e con quale frequenza accedi.

    
risposta data 10.03.2017 - 13:40
fonte
6

La prima parte è principalmente una risposta parziale per il caso di applicazione desktop. L'installazione di un'applicazione desktop non equivale alla navigazione in un sito remoto. In quest'ultimo, ti fidi del tuo browser per proteggerti (per quanto possibile) da eventuali attacchi. Nel primo caso, è necessario considerare attendibile l'applicazione per non contenere malware. Faccio poca differenza tra fidarsi di Chrome a non inviare tutte le mie informazioni personali a Google e confidare in un'app NVidia per non rubare la password di Google.

L'unica vera differenza è che aggiungi una nuova possibile posizione di attacco sulla tua password Google unica. Se ti preoccupa, crea un account ausiliario, che non usi per gli accessi sensibili e utilizzalo per NVidia e / o altre applicazioni desktop.

Detto questo, è decisamente una cattiva pratica per un sito o anche un'applicazione desktop per mettersi in cammino e prendere in qualsiasi momento la responsabilità di passare la tua password a un servizio di autenticazione esterno. Protocolli come OAuth o CAS sono stati appositamente progettati per consentire a un sito o un'applicazione di delegare l'autenticazione a un servizio di terze parti e non visualizzare mai la password . Il client si fida dell'autenticazione. servizio per proteggere le sue credenziali, il servizio applicativo si fida dell'autenticazione. servizio per identificare in modo sicuro il cliente. Punto. Doversi affidare al servizio dell'applicazione per non rubare le credenziali è IMHO un errore di progettazione.

Per il caso d'uso del desktop, il modo corretto è quello di scaricare l'aggiornamento in modo sicuro tramite il browser - tu prendi la responsabilità di quella parte - e poi l'applicazione prende il file scaricato per renderlo aggiornamenti. In questo modo, se qualcosa va storto (ad esempio hai scaricato un file compromesso da un sito pirata) tu sei responsabile per questo. Ma qualche app. gli sviluppatori non sono sempre consapevoli di chi dovrebbe essere responsabile di cosa ...

    
risposta data 10.03.2017 - 12:21
fonte
3

Secondo me non è una buona pratica. Alcune domande non possono essere ignorate:

  • Google e Facebook esplorano già la nostra privacy, vendendo le nostre informazioni personali a società terze e inserzionisti. È solo più cibo per il pesce. Ecco perché forniscono questo servizio.
  • Come dice @Pascal, tutte le uova nello stesso paniere, confidando in una terza parte. Al giorno d'oggi non è una buona opzione.
  • Puoi sviluppare te stesso un server Oauth, senza la necessità di usare Facebook o Google. In questo modo puoi essere sicuro di ciò che sta accadendo con i tuoi dati.
risposta data 10.03.2017 - 13:53
fonte
3

Credo che sia stato questo video in cui discute esattamente di questo.

Per riassumere:

"Se hai la possibilità di non archiviare la password, e non di occupartene, ma preferisci che qualcun altro (preferibilmente più grande) lo faccia per te, scegli sempre questa opzione.Questo sarà un potenziale problema in meno di cui preoccuparsi ".

    
risposta data 10.03.2017 - 17:30
fonte
-1

Bene, se Google e Facebook lo usano, uno deve essere un po 'pignolo per non considerarlo una buona pratica. Hanno le migliori persone di autenticazione del mondo e sembrano sentirsi a proprio agio con OAUTH2.

Ha i suoi vantaggi - non devi scrivere il codice di manutenzione della password, puoi stare abbastanza bene che il loro codice sia completamente testato, ecc. Uno dei suoi svantaggi è che può essere una seccatura da testare all'interno della tua app, e i tuoi utenti devono avere un account su un provider.

Avendo detto che non uso più OAUTH2, passando a Two Factor usando sms e codici challenge. Sono rimasto sorpreso dalla facilità con cui si collegava, nessuno dei suddetti inconvenienti è vero: facile da testare e le persone hanno più probabilità di avere una cella che un account. È abbastanza economico (anche se OAUTH2 è gratuito), e io per primo sento che è più sicuro. Certo, YMMV

    
risposta data 10.03.2017 - 20:55
fonte

Leggi altre domande sui tag