{"id":650,"date":"2023-05-26T11:39:14","date_gmt":"2023-05-26T10:39:14","guid":{"rendered":"https:\/\/www.smarinier.net\/?p=650"},"modified":"2023-05-26T11:39:14","modified_gmt":"2023-05-26T10:39:14","slug":"wordpress-les-commentaires-indesirables-les-spams-et-le-petit-pot-de-miel","status":"publish","type":"post","link":"https:\/\/www.smarinier.net\/wordpress-les-commentaires-indesirables-les-spams-et-le-petit-pot-de-miel\/","title":{"rendered":"WordPress, les commentaires ind\u00e9sirables, les SPAMs et le petit pot de miel"},"content":{"rendered":"<p>Cela commence comme un conte : \u00ab\u00a0Il \u00e9tait une fois un WordPresss sur lequel arrivaient des commentaires\u00a0\u00bb&#8230; Mais \u00e7a ne fait as r\u00eaver ! Apr\u00e8s avoir mis en place un captcha, un antispam, je continue \u00e0 recevoir quelques commentaires ind\u00e9sirables.<\/p>\n<p>Il me semble opportun de signaler d&rsquo;ailleurs que Askimet (le plugins par d\u00e9faut recommand\u00e9 par WordPress ) contrairement \u00e0 ce qui semble sugg\u00e9r\u00e9 dans de nombreux posts, n&rsquo;est pas gratuit. En effet, \u00e0 l&rsquo;instant o\u00f9 votre site recouvre une activit\u00e9 induisant une activit\u00e9 commerciale, vous devez payer un montant mensuel.<\/p>\n<p>Bref, malgr\u00e9 les outils de pr\u00e9vention mis en oeuvre, les mouches continuent de passer au travers des mailles. De fait, quoi de mieux que le miel pour attirer les mouches ? Oui, je sais, mais non, on reste dans la m\u00e9taphore du conte, s&rsquo;il vous plait&#8230;<\/p>\n<p>Bien \u00e9videmment, ces spams sont engendr\u00e9s par des bots qui ont identifi\u00e9 votre formulaire WordPress. Ils remplissent les champs automatiquement, contournent les protections, et envoient automatiquement le contenu du formulaire.<\/p>\n<p>C&rsquo;est l\u00e0 qu&rsquo;intervient la technique du \u00ab\u00a0pot de miel\u00a0\u00bb (HoneyPot). Le principe est de mettre des champs connus de WordPress, qui vont donc \u00eatre remplis par ces robots, mais que l&rsquo;on rendra invisibles via le CSS. Ainsi, si ce champ est fourni, c&rsquo;est simplement que c&rsquo;est un robot qui l&rsquo;a rempli.<\/p>\n<p>Il suffit alors d&rsquo;utiliser le champ \u00ab\u00a0URL\u00a0\u00bb, un vieux champ que je trouve inutile car il me semble que la plupart des commentaires sont faits par des personnes qui n&rsquo;ont pas forc\u00e9ment de sites \u00e0 publier. Ce champ a rapidement \u00e9t\u00e9 d\u00e9voy\u00e9 par les spammers pour tenter de maximiser des r\u00e9f\u00e9rences vers des sites afin d&rsquo;accentuer artificiellement leurs SEO. Donc, finalement, ce champ est un assez bon indicateur de spam.<\/p>\n<p>La strat\u00e9gie est donc la suivante:<\/p>\n<ul>\n<li>Laisser votre champ URL dans le formulaire<\/li>\n<li>Mais le cacher via CSS<\/li>\n<li>Filtrer les commentaires dont le champ URL est rempli<\/li>\n<\/ul>\n<p>Cacher le champ URL<\/p>\n<p>Une difficult\u00e9 \u00e0 r\u00e9gler est que ce champ est souvent encadr\u00e9 car des \u00e9l\u00e9ments de mise en forme relativement g\u00e9n\u00e9rique qu&rsquo;il faut \u00e9galement cacher.<\/p>\n<p>Pour s&rsquo;affranchir des diff\u00e9rents th\u00e8mes et de leur fa\u00e7on de g\u00e9rer les formulaires, je propose la solution qui consiste \u00e0 encapsuler le champ URL dans un \u00e9l\u00e9ment accessible au CSS (avec la fonction <strong>my_filter_url_field<\/strong>).<\/p>\n<p>Pour rejeter les commentaires ayant un contenu dans le champ URL, on peut faire appel au filtre <strong>pre_comment_approved<\/strong>, via la fonction <strong>my_filter_comment<\/strong>.<\/p>\n<p>Ainsi, dans le fichier functions.php de votre th\u00e8me (ou th\u00e8me enfant), ajoutez le code suivant:<\/p>\n<pre class=\"code\">function my_filter_url_field( $fields ) {\r\n\tif (isset($fields['url'])) {\r\n\t\t$fields['url'] = '&lt;span class=\"in_comment_author_url\"&gt;'.$fields['url'].'&lt;\/span&gt;';\r\n\t}\r\n\treturn $fields;\r\n}\r\n\r\nfunction my_filter_comment( $approved , $commentdata )\r\n{\r\n\tif (!empty($commentdata['comment_author_url'])) {\r\n\t\treturn 'spam';\r\n\t}  \r\n  return $approved;\r\n}\r\n\r\nadd_filter( 'pre_comment_approved' , 'my_filter_comment' , '99', 2 );\r\nadd_filter( 'comment_form_default_fields', 'my_filter_url_field' );\r\n<\/pre>\n<p>Ensuite, if suffit de placer dans votre CSS:<\/p>\n<pre class=\"code\">.in_comment_author_url {\r\n\tdisplay: none;\r\n}\r\n<\/pre>\n<p>Vous retrouverez ainsi les commentaires directement class\u00e9s en \u00ab\u00a0ind\u00e9sirables\u00a0\u00bb.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Cela commence comme un conte : \u00ab\u00a0Il \u00e9tait une fois un WordPresss sur lequel arrivaient des commentaires\u00a0\u00bb&#8230; Mais \u00e7a ne fait as r\u00eaver ! Apr\u00e8s avoir mis en place un captcha, un antispam, je continue \u00e0 recevoir quelques commentaires ind\u00e9sirables. Il me semble opportun de signaler d&rsquo;ailleurs que Askimet (le [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":652,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[39],"tags":[],"class_list":["post-650","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-wordpress"],"_links":{"self":[{"href":"https:\/\/www.smarinier.net\/%77%70%2d%6a%73%6f%6e\/wp\/v2\/posts\/650","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.smarinier.net\/%77%70%2d%6a%73%6f%6e\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.smarinier.net\/%77%70%2d%6a%73%6f%6e\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.smarinier.net\/%77%70%2d%6a%73%6f%6e\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.smarinier.net\/%77%70%2d%6a%73%6f%6e\/wp\/v2\/comments?post=650"}],"version-history":[{"count":2,"href":"https:\/\/www.smarinier.net\/%77%70%2d%6a%73%6f%6e\/wp\/v2\/posts\/650\/revisions"}],"predecessor-version":[{"id":653,"href":"https:\/\/www.smarinier.net\/%77%70%2d%6a%73%6f%6e\/wp\/v2\/posts\/650\/revisions\/653"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.smarinier.net\/%77%70%2d%6a%73%6f%6e\/wp\/v2\/media\/652"}],"wp:attachment":[{"href":"https:\/\/www.smarinier.net\/%77%70%2d%6a%73%6f%6e\/wp\/v2\/media?parent=650"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.smarinier.net\/%77%70%2d%6a%73%6f%6e\/wp\/v2\/categories?post=650"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.smarinier.net\/%77%70%2d%6a%73%6f%6e\/wp\/v2\/tags?post=650"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}