Meilleure Implémentation Du Pot De Miel (Forme Anti-Spam)

Comment se débarrasser de ces spambots sur notre site?

Chaque site est victime de spambots à un certain point. La façon dont vous la Gérez peut affecter vos clients, et la plupart des solutions peuvent décourager certaines personnes de remplir vos formulaires.

c'est là que la technique honeypot entre en jeu. Il vous permet d'ignorer les robots spammeurs sans forcer vos utilisateurs à remplir un captcha ou Sauter à travers d'autres cerceaux pour remplir votre formulaire.

ce post est purement pour aider les autres à implémenter un piège honeypot sur leurs formulaires de site web.


mise à Jour:

depuis la mise en œuvre du pot de miel ci-dessous sur tous les sites Web de mon client, nous avons bloqué avec succès 99,5% (milliers de soumissions) de tous nos spams. C'est sans l'aide de techniques mentionnées dans la section "avancé", qui sera mis en œuvre prochainement.

20
demandé sur Nicholas Summers 2016-03-25 23:17:45

2 réponses

Concept

en ajoutant un champ invisible à vos formulaires que seuls les robots spammeurs peuvent voir, vous pouvez les tromper en leur révélant qu'ils sont des robots spammeurs et non des utilisateurs finaux réels.

HTML

<input type="checkbox" name="contact_me_by_fax_only" value="1" style="display:none !important" tabindex="-1" autocomplete="off">

ici, nous avons une simple case à cocher qui:

  • est caché avec CSS.
  • a un nom obscur mais évidemment faux.
  • a une valeur par défaut l'équivalent de 0.
  • ne peut pas être rempli par auto-complete
  • ne peut pas être navigué via la touche onglet . (Voir tabindex )

Côté Serveur

du côté du serveur, nous voulons vérifier si la valeur existe et a une valeur autre que 0, et si c'est le cas, la gérer de manière appropriée. Cela inclut la journalisation de la tentative et de tous les champs soumis.

en PHP il pourrait ressembler à quelque chose comme ceci:

$honeypot = FALSE;
if (!empty($_REQUEST['contact_me_by_fax_only']) && (bool) $_REQUEST['contact_me_by_fax_only'] == TRUE) {
    $honeypot = TRUE;
    log_spambot($_REQUEST);
    # treat as spambot
} else {
    # process as normal
}

de Secours

C'est là que la bûche entre en jeu. Dans le cas où, d'une manière ou d'une autre, l'un de vos utilisateurs finit par être identifié comme spam, votre log vous aidera à récupérer toute information perdue. Il vous permettra également d'étudier tous les bots qui fonctionnent sur votre site, s'ils sont modifiés à l'avenir pour contourner votre pot de miel.

Reporting

de nombreux services vous permettent de signaler des adresses IP connues via une API ou en téléchargeant une liste. (Tel que CloudFlare ) s'il vous plaît aider à rendre l'internet un endroit plus sûr en signalant tous les spammeurs et spam IPs que vous trouvez.

avancé

si vous avez vraiment besoin de réprimer un spambot plus avancé, il y a quelques choses supplémentaires que vous pouvez faire:

  • Cacher le pot de miel champ purement avec JS au lieu de CSS simple
  • utilisez des noms d'entrée de formulaire réalistes que vous n'utilisez pas réellement. (comme "téléphone" ou "site web")
  • Inclure la validation d'un formulaire dans le pot de miel de l'algorithme. (la plupart des utilisateurs n'obtiendront qu'un ou deux champs erronés; les robots spammeurs obtiendront généralement la plupart des champs erronés)
  • utiliser un service comme CloudFlare qui bloque automatiquement les spam IPs connus
  • ont des timeouts de forme, et empêchent l'affichage instantané. (les formulaires soumis en moins de 3 secondes du chargement de la page sont typiquement des spams)
  • empêche toute IP de poster plus d'une fois par seconde.
  • pour plus d'idées regardez ici: comment créer un honeypot "nucléaire" pour attraper des spammeurs de forme
44
répondu Nicholas Summers 2017-05-23 11:55:11

une suggestion pour vraiment forcer la non-autocompletion:

remplacer autocomplete="off" par autocomplete="nope" ou autocomplete="false"

puisque la valeur donnée n'est pas valide (les valeurs pour autocomplete sont seulement on ou off ), le navigateur cessera d'essayer de remplir le champ.

Pour plus de détails, Comment Désactiver la Forme d'auto-complétion .

Espérons que cette aide.

SYA:)

8
répondu LebCit 2017-02-13 21:47:54