Come trasferire un database di nomi utente e password ad un amico

3

Caveat: fondamentalmente non conosco nulla sulla sicurezza delle informazioni, quindi mi scuso in anticipo. Cercherò di mantenere la domanda il più generale possibile.

Ho un sito web X su cui ho i privilegi di amministratore (qualcun altro mi ha aiutato a configurare il sito Web per me, però). Ci sono utenti A, B, C sul mio sito web, con nomi utente e password.

Suppongo che da qualche parte nell'infrastruttura del mio sito web, ci sia un:

  • Tabella dei nomi utente registrati
  • Tabella delle password crittografate che utilizzano un algoritmo hash
  • Qualche descrizione di ciò che questo algoritmo hash è

Il mio amico fidato (importante perché il problema di sicurezza non è che potrebbe essere losco) sta creando un sito Web diverso Y . Vuole A, B, C essere in grado di accedere a Y usando le stesse credenziali che usano per X . Questa è solo una cosa da fare una volta sola; se D si unisce al mio sito X domani, il mio amico non si preoccupa di avere D essere in grado di utilizzare le sue credenziali di accesso su Y .

Tuttavia, non tutti i miei utenti vogliono necessariamente unirsi a Y , e non so a priori quale di loro fare.

Quali informazioni posso dare al mio amico in modo tale che, se A e C vogliono accedere a Y con i loro X credenziali, possono, ma anche garantire che le informazioni di B siano protette?

Nota: capisco perfettamente che A, B, C non dovrebbe riutilizzare le loro password su più siti Web, ma X e Y sono collegati in qualche modo in modo tale che non sarebbe solo conveniente per gli utenti, ma avrebbe anche senso per loro avere le stesse credenziali di accesso.

    
posta user01101001 13.05.2016 - 18:32
fonte

3 risposte

5

Ciò che stai chiedendo di fare viola alcuni concetti fondamentali di sicurezza, quindi mi sconsiglia di trovare una soluzione tecnica.

Le credenziali intendono convalidare un utente contro quella risorsa attendibile. Passando queste password a una terza parte interrompe la fiducia (anche se ti fidi della terza parte, i tuoi utenti non hanno questa possibilità). Se fossi uno dei tuoi utenti, sarei molto, molto arrabbiato. Quello che proponi è chiamato "violazione". Stai esponendo le password di un utente a una terza parte senza il loro consenso.

Anche OAuth consente all'utente di indicare in modo specifico a quale servizio si desidera accedere, fornendo la potenza all'utente.

La soluzione migliore è semplicemente invitare gli utenti a creare un nuovo account sul servizio di terze parti e ci sono molti modi per renderlo semplificato senza rivelare le password dell'utente. Come inviare un link di creazione account pre-compilato per il nuovo sito.

    
risposta data 13.05.2016 - 18:57
fonte
1

Suppongo che le password non vengano memorizzate da nessuna parte e che la verifica venga eseguita utilizzando gli hash.

Hai due scelte, in pratica:

  1. Dai a Y un dump di username e password e lascia che Y si preoccupi di come integrare quelli
  2. Utilizza SSO (ad es. con OAuth): X diventa la parte fidata e Y il client affidabile . Questa opzione funziona per tutti gli utenti registrati su X , indipendentemente dal momento in cui sono entrati o quando è stato abilitato il SSO.

P.S .: Queste due opzioni possono essere variate in molti, molti modi diversi. Quale di questi è più appropriato dipende dai requisiti, dal budget dedicato alla funzione, ...

    
risposta data 13.05.2016 - 18:49
fonte
1

What information can I give my friend such that, if A and C want to log into Y with their X credentials, they can, but also ensuring that the information of B is protected?

La risposta breve è " nothing ."

Dal momento che non sai chi del set di tutti gli utenti vuole essere associato al nuovo sito, dovresti includere l'intero set di utenti.

Una semplice lettura della tua domanda implicherebbe che non sai nemmeno cosa stai consegnando al tuo amico.

"I assume that somewhere in the infrastructure of my website, there's a: •Table of registered usernames •Table of encrypted passwords using a hash algorithm •Some description of what this hash algorithm is"

Forse sono memorizzati in testo normale o protetti con un algoritmo di hashing debole. Sono salati o no? Queste sono cose che non dovrebbero essere assunte, specialmente quando prevedi di consegnarle a terzi.

Il tuo amico potrebbe non essere in ombra, ma la consegna delle credenziali senza sapere chi vuole essere associato al nuovo sito è confusa.

I metadati sono dati reali.

Ad esempio, dì che qualcuno si unisce al sito "A". L'amministratore fornisce le credenziali al sito "B" senza il consenso dell'utente. Il sito "B" viene violato, irriso o altrimenti trapelato. Ora l'utente è associato al sito "B" senza alcuna azione propria. Cosa succede se il sito "B" è un sito terroristico? Benvenuto nella terra delle liste di controllo. E se fosse Ashley Madison? Benvenuti in "altri significativi" problemi. "Davvero, non ero io!"

Se stai testando le funzionalità del nuovo sito, usa solo i dati fittizi. Altrimenti, gli utenti possono partecipare.

    
risposta data 13.05.2016 - 19:36
fonte

Leggi altre domande sui tag