correo electrónico cancelar suscripción seguridad de manejo

13

Hay otra pregunta con un título similar: Anular la suscripción de forma segura Sin embargo, mi pregunta aborda completamente otro problema.

Estoy tratando de configurar un sistema de notificación en el sitio web, que enviará correos electrónicos a los usuarios en función de diferentes eventos en la página web, por ejemplo, podría ser. recibir un mensaje en el sitio de otro usuario, alguien que esté comprando su producto, dejando un comentario, etc. - hay muchas cosas que pueden provocar una notificación. Los usuarios de la configuración de su cuenta pueden elegir para qué eventos exactos desean recibir un correo electrónico.

Estaba leyendo las mejores prácticas de correo electrónico de mailgun enlace

y aprendí eso

  

Es importante que los destinatarios tengan la posibilidad de darse de baja de   correos electronicos Primero, es requerido por la Ley CAN-Spam. Segundo, si tu   No les dé esta opción, es más probable que hagan clic en el correo no deseado.   botón de queja, lo que causará más daño que permitirles   darse de baja Finalmente, muchos ESP buscan enlaces para darse de baja y son   es más probable que filtre su correo electrónico si no los tienen.

También, de las directrices de gmail sobre la cancelación de la suscripción enlace

  

Un usuario debe poder darse de baja de su lista de correo a través de uno   de los siguientes medios:

     

Un enlace prominente en el cuerpo de un correo electrónico que lleva a los usuarios a una página.   confirmando su desuscripción (no hay comentarios del usuario, otros   de confirmación, debe ser requerido). Al responder a su correo electrónico con   una solicitud de cancelación de suscripción.

Por lo tanto, quiero tener la opción para cancelar la suscripción en el correo electrónico. Realmente no preferiría usar la segunda opción (respondiendo a su correo electrónico), ya que podría tener algunas dificultades técnicas (p. Ej., Tengo que ver con el tipo de notificación en el correo electrónico de respuesta, tengo que revisar el correo electrónico en busca de la bandeja de entrada con regularidad y quizás algo más. no pensado en). Estoy pensando en tener un enlace para anular la suscripción en el correo electrónico y debido a que su configuración de notificación solo se puede cambiar después de iniciar sesión, se contradice con el punto no input from the user, other than confirmation, should be required de gmail.

Por lo tanto, parece que me quedo con una URL "pública" para cambiar su configuración de notificación. Desde que leí y solía manejar casos similares, p. Ej. Al confirmar el correo electrónico o la recuperación de la contraseña, estoy enviando un correo electrónico que en url solo contiene hash generado aleatoriamente (sha512), NO de ninguna manera revela la información del usuario, que caduca en menos de 1 hora (solía poner 15 minutos).

Ahora, en el caso de un enlace de cancelación de suscripción, aunque incluya un hash aleatorio (y quizás el tipo de notificación también), está vinculado al usuario en la base de datos, porque es público, si se comparte el correo electrónico / enlace accidentalmente o publicado en algún lugar, alguien más puede editar las preferencias de notificación de ese usuario. Por otro lado, generar hash aleatorio con cada notificación y guardar en la base de datos, también vencerlos después de algún tiempo suena excesivo para mí, considerando también que, a medida que caduque, si el usuario hace clic en el enlace para cancelar la suscripción en un correo electrónico antiguo, no funcionará. .

No pude encontrar ninguna información útil por ahí, por lo que estoy buscando algunos consejos sobre cómo abordar de forma correcta y segura la cancelación de la suscripción del usuario en general y específicamente en casos similares a los míos. Cualquier ayuda es muy apreciada.

Gracias

    
pregunta dav 28.02.2016 - 13:06
fuente

3 respuestas

16

Este es un buen ejemplo para un caso en el que la facilidad de uso y la seguridad no van de la mano.

Un usuario desea facilidad de uso: desea poder hacer clic en el enlace y cancelar la suscripción. Quieren que esto funcione siempre (no solo X cantidad de tiempo después de recibir el correo electrónico, y definitivamente no con X en 15 minutos o una hora).

Quieres seguridad: no quieres que un atacante pueda forzar la baja de la suscripción de tus usuarios.

Ahora analicemos estas necesidades:

Utilidad

La usabilidad es bastante importante. Si no permite la cancelación fácil de la suscripción:

  • tu marca sufrirá un daño de imagen
  • tus correos electrónicos serán tratados como spam
  • está violando la ley CAN-SPAM (vea, por ejemplo, aquí : The law also requires that the unsubscribe mechanism must be able to process opt-out requests for at least 30 days after the transmission of the original message )

Seguridad

Por lo tanto, está utilizando un token largo y aleatorio generado de manera segura, lo que significa que un atacante no puede forzar simplemente su formulario de cancelación de suscripción para cancelar la suscripción de una gran parte de sus usuarios.

A lo sumo, un atacante puede anular la suscripción de usuarios individuales después de que de alguna manera revelen su token de anulación de suscripción.

Entonces, ¿qué es lo que realmente debe preocuparse? Ningún atacante utilizará la ingeniería social para obtener el token de cancelación de suscripción de los usuarios. Tampoco piratearán el correo electrónico de sus usuarios o su base de datos solo para cancelar su suscripción a su boletín.

Por lo tanto, el único escenario de ataque probable es: un usuario publica accidentalmente su boletín de noticias, incluido su token de cancelación de suscripción a un sitio web. Alguien ve esto y decide cancelar la suscripción de ese usuario.

Esto puede causar una pequeña molestia para usted y posiblemente para el usuario, pero es un escenario que es poco probable que ocurra a menudo.

Conclusión

Un token aleatorio generado correctamente es suficiente para un enlace de cancelación de suscripción.

Los peligros de que se revele este token son bajos, y el uso de cualquier otro mecanismo (como requerir inicios de sesión o caducar el token después de un breve período de tiempo) generalmente no es aceptable.

A lo sumo, podría caducar un token después de 30 días. Pero eso también significa que necesita tener más de un token por usuario.

    
respondido por el tim 28.02.2016 - 15:29
fuente
0

¿Por qué no tener el enlace "cancelar suscripción" a los usuarios directos a una página protegida por sus métodos de autenticación habituales?

Quizás enlace , donde es donde se pueden activar / desactivar los mensajes de correo electrónico.

Esto será tan seguro como el resto de las opciones de preferencias de su usuario, es fácil de alcanzar (asumiendo que su usuario puede recordar sus detalles de inicio de sesión) y permitirá que las capacidades de mayor precisión ajusten la configuración del correo electrónico (por ejemplo, seleccionando un resumen diario / semanal) en contraposición a la suscripción / cancelación de suscripción binaria.

    
respondido por el kwah 29.02.2016 - 00:22
fuente
0

Puede que me esté perdiendo algo, pero no creo que necesites hacer la cancelación de la suscripción de todos modos.

Los requisitos y las mejores prácticas relacionadas con tener una función fácil para cancelar la suscripción se relacionan con servicios que son esencialmente un servicio de correo electrónico, por ejemplo. una lista de correo, correos electrónicos promocionales de proveedores, etc.

En su caso, está hablando de notificaciones enviadas a sus usuarios y ha declarado que puede controlar las notificaciones a través de la página de configuración de su cuenta. Esencialmente, ya les has dado el control y la posibilidad de cancelar la suscripción. Todo lo que necesita hacer es agregar un enlace en la parte inferior de los correos electrónicos de notificación a la URL de la página de configuración de la cuenta. Trabajo hecho.

    
respondido por el Tim X 04.03.2016 - 03:24
fuente

Lea otras preguntas en las etiquetas