7
votes

Blocage de spam dans un site PHP sans déranger l'utilisateur

Je travaille actuellement sur un petit site de chat / forum que j'ai lancé dans un week-end, et il a des entrées anonymes (c'est-à-dire pas de noms d'utilisateur ou de mots de passe). Cela ressemble à cela pourrait être facile à gâteau pour un spammeur de ruiner, mais je ne veux pas déranger l'utilisateur avec des captchas ou des entrées anti-spam similaires.

Y a-t-il des alternatives invisibles à l'utilisateur à ceux-ci? Merci pour votre aide.


0 commentaires

5 Réponses :


6
votes

Pas une solution anti-bombe, mais vous pouvez avoir des champs de saisie cachés. Si ceux-ci ne sont pas laissés vides, vous avez attrapé un bot. Les bots ont tendance à remplir tous les champs de saisie, tandis que les utilisateurs quitteront certains champs qu'ils ne voient pas vide.


4 commentaires

Pour clarifier, les champs de saisie "cachés" doivent être masqués par CSS (feuille de style, pas style inline) ou, mieux encore, JavaScript (bien que si JavaScript est déjà une partie nécessaire de votre site). Faire Type d'entrée = masqué ne va pas foll aucun robot.


Juste pour référence, cette technique est appelée Honeypot.


Je ne fais pas que je trompera les bots non plus. Vous pouvez facilement utiliser JS pour vérifier si un champ est caché ou non (même s'il était masqué par CSS). En plus, vous supposez que tous les champs seront remplis de bots, cela ne vous protège donc pas des bots qui ne remplissent que certaines d'entre elles.


@Reyell, quand j'ai utilisé de la première fois à midi, j'ai été surpris à quel point ils étaient affectifs. Cela semble trop évident d'un tour du travail, mais cela fonctionne remarquablement bien. Les bots ont tendance à fonctionner sur la quantité sur la qualité, de sorte que tout astuce qui leur prenait le temps de trier est utile.



0
votes

L'idée de Caplas est qu'elles sont très faciles pour les humains de passer, mais de très diffucult pour les robots, etc. à éviter. Si vous ne voulez pas ce genre de solution, ce qui gardera ces spam-bots d'afficher sur votre site?

C'est comme si vous souhaitez que votre ordinateur soit en sécurité mais que vous ne voulez pas utiliser un antivirus et un pare-feu.

Je pense que vous pouvez créer une session pour chaque utilisateur qui entre dans votre site et la première fois qu'ils veulent publier quelque chose leur montrent le CAPCHA (ne pas nécessiter de vous connecter, il suffit de passer le CAPCHA). S'ils le transmettent, il suffit de stocker un drapeau dans la session qu'ils sont humains. Tant qu'ils ont leur navigateur ouvert, ils peuvent poster et répondre sur votre site ce qu'ils veulent. Les robots vont peu probable que ce premier test.


0 commentaires

0
votes

Il y a deux classes de protection anti-spam.

Le premier consiste à rendre difficile les robots automatisés de trébucher des données sur votre site. La méthode de champ de formulaire caché est souvent mentionnée pour cela et convient aux basses sites de trafic. Ces protections peuvent être trivialement vaincues par un bot de spam écrit pour votre site. Cependant, si vous êtes une cible trop petite, cela ne se produira pas.

Le second est le type "goomersome". Cela implique généralement un CAPTCHA, une inscription ou une confirmation de courrier électronique de courrier. Vous pouvez utiliser quelques approches pour rendre cela moins gênant, mais nécessite beaucoup plus d'efforts sur le côté du bot pour poster le spam.

Notez que ces deux approches peuvent souvent entraver les utilisateurs handicapés et mobiles.


0 commentaires

2
votes

Cela a fonctionné à 100% du temps pour moi:

if($_POST['email'] != 'do not fill this in it is for spam catching') {
    // spam
}


2 commentaires

Ils peuvent être suffisamment intelligents pour ne pas remplir les intrants pré-remplis. Mieux vaut la laisser vide à mon avis.


Très bon point. Cela fonctionne parfaitement pour le moment sur mes sites. Si (quand) la journée vient que les bots s'épanouissent cette méthode, je vais aller pour autre chose, bien sûr. Je laisse cela à l'accessibilité.



9
votes

Une chose que vous devriez savoir sur les spammeurs est qu'ils vont toujours pour le fruit peu suspendu. Même avec des pirates pirates. Par cela, je veux dire qu'ils choisiront les plus faciles à toucher des cibles qui affectent le plus d'utilisateurs. C'est pourquoi les vulnérabilités PHP et Windows sont souvent exploitées: elles affectent tant d'utilisateurs que si vous trouvez une telle faiblesse / exploite votre cible "marché" est énorme.

C'est aussi une grande partie de la raison pour laquelle Linux et Mac Oss restent relativement indemnes par des virus par exemple: le marché cible est beaucoup plus petit que les fenêtres. Maintenant, je n'ai pas assimilé la sécurité et la robustesse de Windows avec Mac / Linux, mais même si le modèle de sécurité des deux derniers est bien meilleur, le nombre d'attaques contre le premier est toujours disproportionné avec les défaillances qu'elle a.

Je dis cela parce que l'un des meilleurs moyens d'éviter ces types de problèmes ne consiste pas à utiliser Sweetware populaire. phpbb par exemple a eu beaucoup d'attaques faites contre elle simplement parce que c'est si populaire.

Donc, en faisant votre propre système de conversation / forum, vous êtes désavantagé, car vous avez un système qui ne dispose pas du test sur le terrain, quelque chose de populaire ne fait que, vous avez également un avantage en ce sens que cela ne vaut pas la plupart des Spammer Il est temps de l'exploiter. Alors, ce dont vous avez besoin pour faire attention, c'est ce que les systèmes automatisés peuvent faire contre vous? Les formulaires de contact sur des sites Web ont tendance à avoir des marqueurs reconnaissables (comme nom, champs de messagerie et commentaire).

Donc, je conseillerais:

  • Ignorer les réponses qui viennent à l'intérieur de 5 à 10 secondes d'envoi du formulaire à l'utilisateur;
  • à l'aide d'un HONYPOT (champs cachés CSS / JS comme décrit ailleurs);
  • Utilisation de JavaScript le cas échéant pour rendre, réorganiser ou afficher le formulaire;
  • en utilisant des noms de champ de forme non prévisibles; et
  • Mauvaises réponses de l'accélérateur par IP.

1 commentaires

Je pense qu'une combinaison des défenses de chronométrage et de minuterie serait un bon départ. Comment puis-je implémenter une minuterie?