System anti spam
Slt tlm,
je me demandais, plutot que de mettre des caracteres generés aleatoirement a retaper lors de la validation d'un formulaire, est ce que ca marcherait si je verifiais pendant le traitement des données si le $_SERVER['HTTP_REFERER'] proviens bien de mon site.
Je sais pas comment marchent ces bots, alors je voulais savoir si c'était utile et efficace!?
Merci bp!
+++
le 10/02/2007 à 18:14
i M@N
Hello !
Ben nan ... les bots en gros ils font une requête sur google style "guestbook" et ils visitent les pages retournées à la recherche de formulaires dont ils remplissent tous les champs en général.
Donc ton idée n'est pas bonne parce que les bots ne font pas de copie de ta page, ils se contentent de remplir des formulaires, les referers seront donc ceux de ton site.
Parfois avec un input avec un style:"display:none" suffit à les différencier car un visiteur humain ne remplit pas un input qu'il ne voit pas.
Mais le mieux c'est de coupler plusieurs techniques comme ce que je viens de te dire plus un
captcha avec un texte / code, image de fond et polices aléatoires auquel tu ajoutes une vérification du contenu de ce qui est posté au niveau de ton traitement (si tu trouve un
<a ou un
href tu peux être sûr que c'est un bot).
@+...
One Love, One Heart, One Unity.
wai mais une fois qu'ils ont choppé un formulaire, c'est pas un server distant qui remplit les champs de mon formulaire? ca serait plus pratique pour eux!
le 10/02/2007 à 18:58
i M@N
Reuh ...
Ben un referer c'est d'où le visiteur vient nan ?
Si il remplit un formulaire de ton site et l'envoie il viendra d'une page de ton site ...
@+...
One Love, One Heart, One Unity.
le 10/02/2007 à 18:59
i M@N
... et confonds pas "server" et "bot".
One Love, One Heart, One Unity.
alors pour les mailers PHP qui sont spammés par les bots , je viens de travailler sur ce problème cet aprem donc c'est encore tout frais. (je voulais éviter un systeme captcha)
Alors les bots récup les formulaires de contact et apres envoient automatiquement des requêtes. En regardant les logs, on voit qu'il n'y a qu'une seule page (contact.php) qui est visitée donc la méthode du http_referer peut très bien fonctionner. En sachant que cette variable peut être spoofée.
Sur mon site voilà comment je procède. Déjà sur chaque page j'ai un compteur qui calcule combien de visiteurs sont actuellement sur mon site (je log l'ip et l'heure) et à chaque connexion je nettoie et j'actualise la liste.
Ma fonction de log marche comme ca, si l'ip n'existe pas je l'INSERT, sinon je l'UPDATE avec un temps (time + 3 min).
Ma solution, je rajoute un champ spam
DB = IP | timestamp | spam
pendant l'insert spam = 0, apres à chaque update spam = spam+1
et sur ma page contact.php, apres la validation si $spam < 2 alors refuse l'envoi du mail.
Ainsi si le visiteur n'a pas au moins visité une autre page avant il ne peut pas envoyer un mail, mais ca ne m'epeche pas d'afficher la page contact.
Voilà j'espère avoir été assez clair. Je suis en train de me dire que vu que le formulaire est envoyé directement par le bot mais sans passé par la page contact.php (d'où le 1 ip dans les logs), un simple spam < 1 devrait être suffisant.
J'espère en avoir pu aider certains.
++
ok joker, c'est pas con, j'y avais pas penser. J'ai deja une compteur live sur mon site dc ca va pa etre du a faire!
+++
Ecrire un message
Votre message vient d'être créé avec succès.
BB-Code
Pour insérer une URL clickable
Pour insérer une adresse E-mail
Pour annoter
Pour écrire du code
Pour faire un lien vers une fonction PHP
Pour écrire du texte préformaté
Pour écrire du texte en gras
Pour écrire du texte en italique
Pour écrire du texte souligné
Pour écrire du texte barré
Pour écrire un titre principal
Pour écrire un titre secondaire
Pour écrire une liste
Smiley
:bond:
:boxe:
:bsmile:
:bump:
:clap:
:coeur:
:cool:
:cry:
:eek:
:evil:
:fleur:
:fou2:
:fou:
:grin:
:grrr:
:hammer:
:hippy:
:hum:
:idee2:
:idee:
:kdo:
:king:
:ko:
:lol:
:love2:
:love:
:mad:
:maitre:
:noel:
:oops:
:raa:
:razz:
:roll:
:sad:
:skull:
:smile:
:timide:
:trink:
:vice:
:vomi:
:wink:
:zzz: