Gostaria de fornecer um clique em "Cancelar inscrição" no rodapé dos e-mails que meu serviço envia.
Obviamente, muitos verificadores de spam verificam e-mails e seguem os links encontrados nos e-mails para verificar se há malware em seu conteúdo. Uma solução alternativa que usei até agora:
- Se a página "Cancelar inscrição" for solicitada via HTTP GET, ela renderizará um formulário de confirmação simples e um pouco de JS que envia o formulário no carregamento da página
- Se a página "Cancelar inscrição" for solicitada via HTTP POST, cancelamos a inscrição do usuário
Dessa forma, o usuário normalmente precisará apenas de um único clique no formulário e receberá a mensagem "Você foi cancelado". Se eles tiverem o JS desativado, ainda poderão enviar manualmente o formulário de confirmação.
Agora, o problema é que alguns scanners como o ATP do Office365 abrirão as páginas e executarão o JS dentro delas . Ao executar o JS, eles enviam o formulário e fazem com que o usuário seja cancelado automaticamente a inscrição.
Considerei adicionar verificações à lógica JS de envio automático:
- não envie automaticamente para agentes de usuários específicos
- não envie automaticamente para intervalos de IP de clientes específicos
- acionar o evento de envio automático ao mover o mouse
Mas todos esses parecem métodos frágeis, na melhor das hipóteses, que podem quebrar à medida que os scanners de e-mail mudam suas táticas.
Tenho certeza de que esse problema tem muitas pessoas diante de mim. Existem soluções razoáveis conhecidas, além de desistir da funcionalidade de clique único?
PS. Eu adicionei suporte ao RFC 8058, mas os usuários ainda clicam em links no rodapé.
fonte
Respostas:
Este é um tópico de debate em andamento no M³AAWG (grupo de trabalho de mensagens, malwares e dispositivos móveis de combate ao abuso). É uma bagunça e não há soluções fáceis. Parece que você está fazendo tudo certo, mas alguns sistemas anti-spam são um pouco agressivos.
O grande problema é que tudo o que você pode fazer também pode ser feito por um comerciante ou spammer abusivo.
A melhor proposta que ouvi é apenas colocar um cronômetro na ação. Adicione um captcha para usuários que cancelam a inscrição dentro de 5 minutos após a entrega e remova o captcha posteriormente. (Do não implementar isso para o seu RFC 8058 List-Unsubscribe-Post link.)
Minha próxima proposta favorita é adicionar um link canário à mensagem. Isso deve ser invisível para os leitores humanos. Se for seguido, ele reverte a atividade de cliques recentes desse IP e o bane dos acionadores de ação por um tempo.
Também gosto das suas ideias, apenas se o Javascript estiver desativado, o usuário ainda poderá cancelar a inscrição após um clique no botão de confirmação.
Há uma parte de mim (aviso, sou um pesquisador anti-spam) que deseja esses falsos positivos. Espero que isso ensine aos meus colegas que eles estão fazendo um trabalho tão ruim e que essas escaladas continuarão chegando até eles. Da sua perspectiva, você passa a mão na bola (embora você perca alguns assinantes no processo).
Os sistemas de detecção de spam devem ter cuidado para evitar links de gerenciamento de assinaturas (pelo menos até que os bandidos comecem a disfarçar suas cargas úteis como links não assinados).
fonte