iframe basic auth o token security

2

Abbiamo due siti, entrambi sono affidabili.

Sul sito1 memorizziamo il nome utente e la password per l'utente per site2.

Facciamo chiamate api sul backend di site1 a site2 tramite auth di base (su tutto HTTPS).

Nonostante l'insicurezza di memorizzare password non crittografate, supponendo che non vi siano violazioni dei dati, questa comunicazione è sicura sul back-end. Ma per quanto riguarda il front-end? Ho visto persone mandare il nome utente e la password memorizzati al front-end, ma questo sembra un modo semplice per qualcuno di prendere la tua password.

Sembra che sarebbe generare un token di autenticazione sul back-end e passarlo al front-end , ma sono ancora un po 'preoccupato per eventuali problemi di sicurezza.

Sto bene con l'implementazione di un server oauth se necessario su site2, ma finora l'autenticazione di base è stata più semplice e mi piacerebbe seguirla se possibile.

    
posta Sabrina Gelbart 27.07.2016 - 20:07
fonte

1 risposta

3

Quello che stai proponendo è molto pericoloso e contro le migliori pratiche di sicurezza. Uno dei problemi è che gli utenti tendono a riutilizzare le stesse password attraverso servizi diversi. Ciò significa che una password trapelata può portare alla vulnerabilità di molti dei loro account. (Ad es .: recente hack di Mark Zuckerberg ). Ciò si combina con il fatto che i contenuti del database a volte perdono a causa di difetti come l'iniezione SQL.

Per proteggere questi reuser delle password, i siti Web devono impegnarsi molto a proteggere i valori delle password in quanto una violazione rende vulnerabili molti siti.

Questo significa solo memorizzare le password in un formato sicuro e non reversibile. Puoi leggere la scienza su Come fare in modo sicuro le password di hash? , ma tu probabilmente è buono se usi bcrypt con i suoi parametri predefiniti.

Se si stava effettuando l'integrazione con un sito di terze parti che supportava solo l'autenticazione nome utente / password e il sito non era disposto a fornire un meccanismo di autenticazione sicuro, forse avrebbe senso archiviare le password per il sito remoto (dovrebbero essere crittografate in modo sicuro) quando non in uso). Ma tu sei il proprietario del sito remoto, quindi basta fare la cosa giusta e supportare un modello di login migliore delle password.

Alcune possibili strategie sono:

  1. OAuth (forse tramite OpenID ), SAML 2 o altro sistema esistente che supporta il single sign-on.
  2. Utilizzando Autenticazione reciproca SSL , site2 potrebbe generare certificati client al momento della registrazione e passarli a site1. Quindi una violazione del database di site1 espone solo certificati e non password dell'utente (ricorda che usano le stesse password per altri siti).
  3. Impersonazione (forse qualcuno può aggiungere un riferimento migliore nei commenti?) funziona se c'è una strong fiducia modello tra site1 e site2. Fondamentalmente, se i siti hanno gli stessi autori e deployer, puoi consentire a site1 di dire semplicemente a site2 di fingere di essere chiamato da JoeUser senza credenziali. Site1 dovrebbe essere autenticato in modo sicuro su site2 per assicurarsi che gli utenti malintenzionati non possano utilizzare questa funzione.
  4. Chiedi all'utente di digitare la propria password site2 in site1 ogni volta che site1 ne ha bisogno.

Sono sicuro che ci sono più soluzioni, ma memorizzare le password in un formato reversibile (ad esempio: crittografato) non è una buona pratica. E memorizzare le password come testo in chiaro è imperdonabile.

    
risposta data 29.07.2016 - 16:06
fonte

Leggi altre domande sui tag