web-dev-qa-db-fra.com

Comment protéger les formulaires de contact contre d'être mal utilisé pour le mailing?

Une fonction courante des formulaires de contact consiste à envoyer le message de contact non seulement au propriétaire du site, mais également à la personne qui a envoyé la demande de contact. Quelles sont les bonnes mesures pour protéger contre le formulaire utilisé comme outil de spamming par un script automatisé qui le soumet des millions de fois avec différentes adresses électroniques?

Je peux penser à plusieurs approches, mais chacun a également une inconvénient ou n'est pas très efficace.

  • Les captchas peuvent être cassés trop facilement de nos jours et sont des tracas pour l'armateur humain.
  • La limitation de taux (seulement N soumet la propriété IP par jour) ne vous aidera pas à un script distribué et peut entraver les utilisateurs projecteurs.
  • La détection de spam peut générer de faux positifs et s'il est intensif en ressources rendra le site sensible aux attaques DDO.

Chaque mesure le rend plus difficile/plus de ressources pour un attaquant, ce qui pourrait donc simplement regarder ailleurs. Quelle est la date prévalente du spam? Dois-je m'inquiéter à ce sujet?

9
chiborg

Vous avez raison pour permettre aux utilisateurs d'Internet arbitraires et non authentifiés de contrôler à la fois le contenu et le destinataire des messages électroniques envoyés par votre service Web (c'est-à-dire le formulaire "Contactez-nous de votre site") est une mauvaise idée et une cible potentiellement attrayante pour les spammeurs.

S'il est important pour vous de:

  • permettre à l'utilisateur de spécifier un destinataire pour le message; et
  • envoyer un message à ce destinataire lors de la soumission du formulaire,

ensuite, je vous suggère que vous empêchez au moins l'utilisateur de contrôler le contenu du message.

Pourquoi ne pas prendre le genre d'approche qui GNU Mailman prend quand il reçoit une demande d'abonnement? C'est-à-dire, envoyez d'abord un email de confirmation, le long des lignes:

Vous ou quelqu'un prétendant être vous, envoyé un message à utiliser à l'aide du formulaire de contact sur notre site Web. Cela provenait de [adresse IP] et a donné votre courrier électronique à l'adresse e-mail de l'expéditeur. Si vous avez effectué cette soumission, veuillez cliquer sur [ICI] ou répondre à cet e-mail en conservant la ligne d'objet intacte, pour confirmer votre soumission de formulaire de contact, et nous allons lire votre soumission et votre réponse en temps voulu. Si vous ne nous envoyez pas de message via notre formulaire de contact, veuillez ignorer ce message.

Vous pouvez évaluer cela de manière à ce que cela ne permet pas plus d'une soumission anonyme à une adresse e-mail donnée par (semaine | mois de l'année | autre), avec la minuterie étant réinitialisée si l'utilisateur confirme selon les instructions ci-dessus. Cela découragerait les trolls d'utiliser la forme des innocents nuisibles en leur faisant envoyer des messages de confirmation parasites.

En tout état de cause, une fois que l'émetteur du formulaire de contact a été vérifié pour avoir accès au compte de messagerie soumis, si le contenu du message soumis serait visible à l'utilisateur de ce compte de messagerie.

8
sampablokuper

Permettez-moi une réponse partielle basée sur une expérience antérieure de l'administration des systèmes: Oui, il est raisonnablement répandu et vous devez vous en soucier.

Aussi politiquement incorrect car il peut sembler: vérifiez si vous pouvez définir géographiquement votre base d'utilisateurs (où les personnes que vous souhaitez faire des affaires avec lesquelles vous pouvez faire des affaires?) Et Notez limiter à tous les autres via des recherches Geoip.

2
rackandboneman

Akismet est une alternative intéressante. Est comme un filtre anti-spam, mais sous-traité et qui combine la connaissance qu'elle accumule de nombreux sites pour mieux protéger le vôtre du spam.

Bien que cela soit utilisé principalement pour protéger wordpress Commentaires (je l'ai utilisé et je ne me souviens vraiment pas d'Asingle faux positif ou de spam qui passait le filtre), son API pourrait être utilisé pour toute autre chose: - https://akismet.com/development/

Vous soumettez les détails des données de contact à leur API et ils vous donneront une réponse positive ou négative pour cela. Il y a des API pour avoir signalé de faux positifs et de faux négatifs.

Bien entendu, il y a des concerts à la protection de la vie privée à considérer ici, car ils recevront vos données de contact. Cependant, est une option qui pourrait être prise en compte.

Une autre suggestion est de l'utiliser en combinaison avec celles que vous avez déjà mentionnées: s'il y a trop de contacts de la même adresse IP, soumettez le contact pour Akismet pour vérifier.

1
CristianTM