Sto lavorando su un sito Web che presenta molti tipi diversi di e-mail. Gli utenti dispongono di account e, una volta effettuato l'accesso, hanno accesso a una pagina delle impostazioni che possono essere utilizzate per personalizzare i tipi di e-mail che ricevono.
Tuttavia, vorrei anche offrire agli utenti un modo semplice per annullare l'iscrizione direttamente nelle e-mail che ricevono.
Ho esaminato elenca le intestazioni di annullamento dell'iscrizione oltre a creare un tipo di collegamento con un clic che annullerebbe l'iscrizione di un utente da quel tipo di email senza richiedere login o ulteriori azioni. Più avanti probabilmente mi richiederebbe di interrompere la convenzione e apportare modifiche al database in risposta a un GET sul link.
Tuttavia, sono errato nel ritenere che uno di questi richiederebbe che io generi e memorizzi in modo permanente un identificatore univoco nel mio database per ogni e-mail che invii, complicando davvero la consegna della posta? Senza questo, non sono sicuro di come sarei in grado di identificare univocamente un utente e un tipo di e-mail al fine di modificare le loro preferenze e-mail e questo identificatore dovrebbe essere archiviato per sempre in quanto un utente potrebbe avere un'e-mail seduta nella propria posta in arrivo per un lungo periodo di tempo prima che decidano di intervenire.
In alternativa, stavo considerando di avere una pagina senza accesso per la gestione delle preferenze email. A differenza di quanto sopra, in cui avrei bisogno di uno di questi identificatori per ogni e-mail, questo avrebbe solo bisogno di un identificativo per utente, senza generazione o altra azione richiesta per l'invio di una e-mail.
Tutti questi problemi sollevano problemi di sicurezza e potrebbero essere potenzialmente utilizzati dalle persone per manomettere le preferenze email degli altri. Questo potrebbe essere in qualche modo mitigato assicurando che l'identificatore sia davvero difficile da indovinare.
Per l'approccio dell'identificatore una volta per utente, stavo considerando di generare l'identificatore passando l'ID di un utente attraverso un qualche tipo di algoritmo di crittografia, è un approccio sano? Per gli identificatori per e-mail, forse potrei usare l'ID di un utente aggiunto al momento.
Tuttavia, anche questo non eliminerebbe del tutto il problema, in quanto sarebbe davvero solo la sicurezza attraverso l'oscurità, e chiunque avesse l'URL potrebbe manomettere, e alla fine la difesa principale dovrebbe essere che la maggior parte delle persone non è così annoiato da manomettere le preferenze email degli altri.
Ci sono altre alternative che ho perso, o problemi o soluzioni con questi che chiunque può fornire indicazioni? Quali sono le migliori pratiche in questo settore?
Modifica: Qui è l'alternativa che mi è sfuggita per chiunque si imbattesse in questo dopo. Il modo intelligente per farlo è includere nel link di annullamento dell'iscrizione una firma crittografica dell'utente da disiscriversare e da cosa devono essere annullate. Nulla deve essere archiviato nel database, pur essendo alla pari con la sicurezza delle soluzioni che stavo considerando.