Supponendo che un provider di identità di terze parti sia affidabile (ad esempio, Facebook, Google, Windows Live), è sicuro utilizzare l'indirizzo email (come previsto dal servizio) per connettere un utente che accede con diversi provider allo stesso account?
Ad esempio, supponiamo di avere una tabella simile a questa:
.-------------------------------------------------------------------.
| user_id | fullname | email | facebook_ident | google_ident |
|---------+----------+--------------+----------------+--------------|
| 1 | John Doe | [email protected] | 4362 | null |
'-------------------------------------------------------------------'
Se un utente effettua l'accesso tramite Google utilizzando l'e-mail "[email protected]", posso collegarlo in modo affidabile con user_id
1 (ad esempio, imposta google_ident = "new_ident"
e accedi come tale)?
Alcuni scenari di preoccupazione:
- Se in qualche modo il provider interrompe la verifica dell'indirizzo email dell'utente, qualcuno può registrarsi al servizio con una e-mail che non possiede e dirottare il rispettivo utente sul mio sistema.
- Se, da parte mia, l'utente cambia l'e-mail con una che non possiede, passerà "il suo account" a un utente che accederà successivamente con quell'e-mail (e dirotterà il suo account come bene).
Una possibile soluzione che riesco a vedere:
- Non consentire agli utenti di creare account quando il loro indirizzo email è già in uso
- Consenti la connessione degli account solo quando l'utente ha già effettuato l'accesso