Pages :
Bonjour.
Je suis en train de réaliser un formulaire de contact, et j'aimerais savoir s'il existe une façon simple d'empêcher toute tentative de spam. Que recommandez-vous ?

De plus, au niveau de la sécurité, est-il suffisant de vérifier la complétude des champs et traiter les données avec un htmlspecialchars ?
Bonjour,

Pour empêcher toute tentative de spam tu peux mettre un captcha, qui peut être textuel ou graphique par exemple. Qui consiste à afficher une chaîne de caractère, plus ou moins déformée, qu'il faut recopier.

Tu peux aussi mettre des questions simples comme "3 + 2 = ?" ...

Il y a tellement de possibilités...
Crousti2 a écrit :
Tu peux aussi mettre des questions simples comme "3 + 2 = ?" ...


Est-ce bien suffisant ? Si oui, je prends !
Salut,

Je préfère une question anti-spam à un captcha, qui enquiquine davantage les honnêtes utilisateurs que les robots.
Salut,

Tu as aussi la technique de la non-question Smiley smile
Tu mets un champ caché avec un libellé du genre "ne remplissez pas cette case", et tu testes sa valeur : s'il est rempli, tu as toutes les chances que ce soit un robot de spam qui ait parsé" ton formulaire : il a trouvé un champ vide, il l'a rempli Smiley cligne
Bonsoir.
Merci pour vos réponses.

Je me demandais aussi, si la présence de champs obligatoires et surtout la vérification de leur bon format, comme par exemple le format de l'adresse email (toto@titi.tata) et du numéro de téléphone (8 à 12 entier et le +) n'étaient pas déjà une protection suffisante contre les robots ?
Victor BRITO a écrit :
Salut,

Je préfère une question anti-spam à un captcha, qui enquiquine davantage les honnêtes utilisateurs que les robots.

Je me demande bien comment le robot pourrait lire une image.
Modérateur
Bonjour jmlapam,

Je n'ai peut-être pas compris ta remarque, mais un programme informatique est capable de détecter les lettres sur une image, exactement comme la numérisation et la reconnaissance de textes avec scanner.
Il y a aussi les solutions sans captchas, comme akismet par exemple, ça n'embête personne et c'est terriblement efficace. Smiley jap
Tony Monast a écrit :
Bonjour jmlapam,

Je n'ai peut-être pas compris ta remarque, mais un programme informatique est capable de détecter les lettres sur une image, exactement comme la numérisation et la reconnaissance de textes avec scanner.


C'est pour cela que j'ai dit: "je vois mal" Smiley whattha
Effectivement, cela est possible, mais c'est mieux avec captcha que sans non, je me suis tapé 2h pour installer un captcha sur mon www pour rien? Smiley bawling
akismet est efficace mais il a un peu le même fonctionnement que les filtres anti-spams des clients de messagerie c'est-à-dire qu'il peut se mettre à bloquer des messages légitimes.

Je pense que les captchas restent le meilleur compromis pour se protéger des spams. Il n'existe, à l'heure actuelle, aucune défense fiable à 100% contre les spams.

Dur dur de trouver LA solution.
Tous les programmes pour spammer actuels sont livrés avec tout l'attirail pour casser quasiment n'importe quel Captcha.
@jb_gfx: j'adore avoir 3 métros de retard comme cela, pourtant j'étais fier de ma captcha, que me conseillerais-tu? Patidou a parlé d'Akimet.
Pour un formulaire de contact le plus simple c'est une captcha inversée (comme ça a été dit). C'est assez efficace et c'est le moins contraignant pour l'utilisateur (personnellement les captcha me sortent par les yeux).

C'est très simple à mettre en place :

Imagine que tu as un champ email et éventuellement un champ confirm_email. Juste en dessous tu rajoutes un champ caché avec un display : none, dans ce genre :


<div style="display:none">
<label for="no_email">N'entrez rien dans ce champ *</label>
<input id="no_email" name="no_email" type="email" />
</div>


Tu remarques que j'ai fait un champ qui donne l'impression qu'on attend un email et que j'ai bien marqué comme obligatoire (astérisque). C'est pour tromper un peu plus les robots.

Et quand le formulaire est envoyé tu regardes si le champs et bien vide, si il a été rempli -> poubelle, c'est un robot, (par contre tu peux éventuellement afficher le message de réussite), sinon tu envoies les données.

Tu peux aussi utiliser cette technique pour autre chose qu'un formulaire de contact (commentaires, livres d'or, etc), en revanche le meilleur moyen de se protéger du spam pour ce genre de cas c'est de modérer les messages.

Askimet c'est marrant contre les spammeurs bourrins (il en reste encore) mais contre des spammeurs expérimentés ça sert pas à grand chose.
Modifié par jb_gfx (10 Dec 2011 - 21:19)
Juste parce que visiblement ça n'a pas été dit : la branche de programmation qui se "spécialise" dans la lecture de texte dans une image s'appelle l'OCR (Optical Character Recognition ( http://fr.wikipedia.org/wiki/Reconnaissance_optique_de_caract%C3%A8res ) ) et fait déjà des miracles sans forcément être inaccessible au commun des mortels. Je sais que pour ma part mon scanner propose une fonction qui permet d'exporter un document scanné en txt (bien sûr c'est pas 100% fiable, faut relire et corriger, mais le plus gros y est quand même).

La solution reCaptcha justement, utilise 2 mots : un qu'elle connait pour tester si l'utilisateur est un robot ou non, un autre qu'elle ne connait pas, pour l'apprendre (là on est plus dans l'IA dans le sens ou le logiciel apprend de lui même) mais bref du coup en remplissant ces captcha on apprend au logiciel à lire des documents, qui sert ensuite à google à numériser des bouquins, entre autre.

Donc les captcha sont pas forcément super fiables, et c'est surtout une énorme douleur pour les vrais humains qui doivent les remplir et on est sur un forum d'accessibilité et de bonnes pratiques, pensons à ceux qui ne voient pas forcément bien les caractères en temps normal dans du text supposé lisible, qui ont des écrans pourris etc etc.

Pour ma part sur mon site j'ai utilisé la méthode du champ caché, j'ai reçu quelques conneries mais genre 3 emails en un an et ils semblaient écrits par des humain (avec du temps libre) donc c'est relativement efficace, l'autre solution c'est aussi de paramétrer correctement son client mail qui peut lui aussi filtrer les emails...

Ensuite c'est ma vision des choses mais si j'ai pas de solution idéale, je préfère encore me taper moi 30 secondes à foutre un spam à la corbeille (tant que c'est en quantité raisonnable) plutôt que de demander à tous mes vrais utilisateurs de se galérer pour m'envoyer un mail, après tout c'est de ma faute (entre guillemets) si j'ai pas de solution idéale pour tous.
Mes recherches m'ont aussi amener à découvrir la méthode du champ caché.
Cependant, est-ce qu'un
<input type="hidden" />
est équivalent à masquer le champ avec du CSS ?
[erreur, désolé. fausse manip]
[Grr, j'ai bugué]
Juste à propos du champ caché, ce qui compte ce sont les champ que tu demandes à l'UA de remplir. L'objectif ici, c'est de faire croire au robot spameur qu'il lui faut remplir un champ. S'il ne le rempli pas, c'est donc que c'est un bot (display:none, toussa toussa) : tu n'envoie donc pas le mail ou le commentaire Smiley cligne
Modifié par audrasjb (11 Dec 2011 - 00:33)
Kleiny a écrit :
Mes recherches m'ont aussi amener à découvrir la méthode du champ caché.
Cependant, est-ce qu'un
&lt;input type=&quot;hidden&quot; /&gt;
est équivalent à masquer le champ avec du CSS ?


Non pas du tout. Et je vois pas en quoi un champ caché permet de se prémunir du spam.
jb_gfx a écrit :
Askimet c'est marrant contre les spammeurs bourrins (il en reste encore) mais contre des spammeurs expérimentés ça sert pas à grand chose.


Ben ça fonctionne bien chez moi (formulaire de contact et commentaires), jamais reçu un spam par email. Les commentaires suspects sont enregistrés mais pas affichés, mais là c'est le boulot du cms. Smiley cligne

P.s.: il y aussi d'autres filtres venant après, mais c'est akismet qui est en première ligne. Smiley smile
Modifié par Patidou (11 Dec 2011 - 12:02)
Pages :