Come implementare un sistema di disiscrizione email per un sito con molti tipi di e-mail?

5

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.

    
posta Mike Liu 03.07.2012 - 17:13
fonte

1 risposta

4

Perché dovresti memorizzare un identificatore univoco per ogni e-mail che invii? Hai solo bisogno di un identificativo univoco per ogni utente, in quanto le impostazioni sarebbero sicuramente specifiche dell'utente.

In genere, le impostazioni dell'abbonamento via e-mail non sono considerate ad alto rischio o ad alta sicurezza, dopotutto possono semplicemente iscriversi se desiderano l'e-mail. Vorrei crittografare l'id dell'utente (e forse il suo indirizzo e-mail o altro) per dare a ciascun utente una chiave di annullamento dell'iscrizione unica che viene aggiunta a un link nel piè di pagina di ciascuna e-mail.

La memorizzazione di una chiave univoca per utente in un database non dovrebbe interessarti. È probabile che se hai le risorse per inviare mailing di massa su basi regolari, hai le risorse per memorizzare una chiave di 32 caratteri.

    
risposta data 03.07.2012 - 17:20
fonte

Leggi altre domande sui tag