Il mio sito ha un sistema di abbonamento alle notizie. Quando un elemento viene aggiornato, una e-mail di notifica viene inviata a tutti coloro che sono abbonati a quell'elemento.
Puoi annullare / iscriverti tramite un modulo sulla pagina di ciascun elemento.
Volevo includere un link di annullamento dell'iscrizione diretto nelle e-mail di notifica. Poi ho pensato che le persone potessero essere disconnesse o visualizzare l'e-mail su una macchina diversa dal loro login (non permettiamo agli utenti di essere simultaneamente loggati su macchine diverse), quindi volevo creare una funzione di annullamento dell'iscrizione con un clic che non richiede l'accesso di qualcuno.
Ovviamente, questo significava un token (si spera) unico.
La mia soluzione di prova è questa:
- quando un utente si iscrive a un elemento, un token viene generato tramite sha512 su una stringa concatenata di varie cose (nome utente, datetime, itemid, ecc.)
- il link di annullamento dell'iscrizione include l'ID dell'articolo, il tipo di elemento e il token come parametri GET
- se e solo se tutte e tre le cose sono abbinate su una riga nel database
user_subscriptions
, la riga viene rimossa e termina la sottoscrizione
Funziona, e ho il sospetto che sia adeguato per questo compito non sensibile alla sicurezza di iscriversi e annullare l'iscrizione ai post di notizie.
Ciò che mi porta a Security.SE è la domanda più ampia di quanto è sicuro un tale sistema di token per altre azioni?
sha512 produce un hash di 128 caratteri, oltre a dover inchiodare l'ID e il tipo di azione che desideri eseguire ...