Conferma di un indirizzo email con un link

4

Durante un processo di onboarding, voglio confermare l'indirizzo email di un utente inviandogli un link sotto forma di URL seguito da un GUID come parametro: www.somedomain.com?p=GUID

Che tipo di rischio per la sicurezza ci sono nel farlo? Tieni presente che sto anche convalidando il numero di cellulare dell'utente con SMS.

    
posta frenchie 08.06.2016 - 15:20
fonte

2 risposte

2

Questo lo dice meglio di me:

the purpose of a GUID is to be globally unique, not to be unguessable.

e

GUIDs are designed for uniqueness, not for security.

Quindi, se sei preoccupato che un utente malintenzionato possa convalidare un indirizzo email diverso da loro, non utilizzare un GUID.

Poiché è una cosa semplice da risolvere, invece genera un token a 128 bit usando un CSPRNG.

Utilizzare anche HTTPS per garantire che il parametro sia crittografato durante il transito. È necessario verificare se la sessione corrisponde all'originale o chiedere di effettuare nuovamente l'accesso dopo aver seguito il collegamento nel caso in cui i prodotti di sicurezza decidano di seguire il collegamento per la scansione prima che raggiungano l'utente (altrimenti potrebbero confermare gli indirizzi e-mail per gli utenti che non lo hanno mai registrati).

Dovresti inoltre reindirizzare tramite HTTP e memorizzare il valore all'interno della sessione mentre aspetti che vengano confermati, per evitare perdite di referer, altrimenti qualsiasi risorsa sulla tua pagina proveniente da un altro dominio potrebbe ricevere il token inviato al referer HTTP richiesta intestazione.

    
risposta data 09.06.2016 - 13:22
fonte
0

C'è un piccolo rischio per la sicurezza nell'usare il metodo che hai descritto per la conferma di un indirizzo email di nuovi account, ma perché in generale un indirizzo email non valido viene generalmente convalidato. Anche se hai usato un ID molto più facile da indovinare rispetto ai GUID, non troppo può andare male (dal punto di vista della sicurezza) se qualcuno ti tira addosso e si firma con un falso indirizzo email, o con l'indirizzo email di qualcun altro.

Detto questo, non penso che sia l'essenza della tua domanda. Come ha osservato Anders nel suo commento, qualsiasi informazione sensibile è accessibile se qualcuno riuscisse a indovinare con successo un GUID? Probabilmente non per la creazione di account, ma se si utilizza lo stesso tipo di URL per il reset della password, allora abbiamo più di cui parlare da un punto di vista della sicurezza, poiché possiamo valutare la sicurezza del GUID stesso.

I GUID, come suggerisce il nome, sono globalmente unici e quindi non devi preoccuparti delle collisioni. Sono anche a 128 bit, il che li rende difficili da prevedere. (Nota però che alcuni dei bit sono riservati, quindi non hai abbastanza 128 bit di entropia.) Detto questo, sono generalmente non impossibile da prevedere, perché di solito sono generati in base a un timestamp particolare. Se questo timestamp è noto (o è stato calcolato in qualche modo), il numero di tentativi necessari per forzare la forza e trovare un GUID valido in uso è fattibile per conquistare con le moderne attrezzature. Questo può essere mitigato utilizzando GUID in scadenza di breve durata per azioni sensibili come le reimpostazioni di password, ma se si hanno a che fare con informazioni di elevata sicurezza contenute in un account utente, probabilmente si preferisce utilizzare qualcosa di diverso dai GUID come un crittografico sicuro stringa generata casualmente.

    
risposta data 08.06.2016 - 18:51
fonte

Leggi altre domande sui tag