Dans l’écosystème WordPress, chaque interaction utilisateur a un point d’entrée technique précis. Lorsqu’un visiteur publie un commentaire sur un article, c’est le fichier wp-comments-post.php qui se charge de recevoir, valider et enregistrer cette donnée dans la base. Peu connu des utilisateurs finaux, ce fichier joue pourtant un rôle clé dans le système de commentaires natif de WordPress. Dans cet article, explorons ensemble l’histoire de wp-comments-post.php, son fonctionnement technique, ses faiblesses en matière de sécurité, ainsi que les bonnes pratiques à adopter pour maîtriser ce point d’entrée souvent ciblé par les spammeurs.
- L’origine et le rôle du fichier wp-comments-post.php dans WordPress
- Comment fonctionne wp-comments-post.php techniquement ?
- Les faiblesses de sécurité associées à wp-comments-post.php
- Les bonnes pratiques pour sécuriser l’accès à wp-comments-post.php
- Peut-on supprimer ou désactiver wp-comments-post.php ?
L’origine et le rôle du fichier wp-comments-post.php dans WordPress
Le fichier wp-comments-post.php
est un composant historique de WordPress, présent depuis les toutes premières versions du CMS, dès la branche 1.0 sortie en 2004. Il fait partie des fichiers fondamentaux situés à la racine de l’installation, au même titre que wp-login.php
, wp-cron.php
ou wp-config.php
. Hérité du fonctionnement initial de b2/cafelog, dont WordPress est un fork, ce fichier remplit une fonction essentielle et inchangée depuis l’origine : servir de passerelle pour l’enregistrement des commentaires. À cette époque, les systèmes de commentaires externes comme Disqus ou les extensions anti-spam comme Akismet n’existaient pas encore. WordPress gérait donc nativement la totalité du cycle de vie d’un commentaire : saisie, validation, stockage, modération, et affichage. Le fichier wp-comments-post.php
est au cœur de cette mécanique. Son rôle est très précis : recevoir les données envoyées via un formulaire HTML de type « commentaire » et les traiter côté serveur. Lorsqu’un visiteur soumet un commentaire depuis un article de blog ou une page WordPress, ce formulaire utilise la méthode POST
et pointe vers wp-comments-post.php
comme URL d’action. Ce fichier devient alors le premier point de traitement des données côté back-end.
Voici un exemple classique de formulaire HTML généré par WordPress (ou par un thème) :
<form action="https://example.com/wp-comments-post.php" method="post">
<textarea name="comment"></textarea>
<input type="hidden" name="comment_post_ID" value="123" />
<input type="submit" value="Envoyer votre commentaire" />
</form>
Ce fichier joue donc le rôle de passerelle entre le front-end (formulaire visible par l’utilisateur) et le back-end (base de données WordPress). Une fois appelé, wp-comments-post.php
va effectuer plusieurs vérifications : valider les champs envoyés, appliquer les filtres de sécurité (comme la vérification d’un nonce), vérifier que l’article est bien ouvert aux commentaires, puis enregistrer le commentaire dans la base de données, dans la table wp_comments
.
Il est le garant de l’intégrité des soumissions de commentaires et constitue le point central de toutes les extensions ou personnalisations liées à cette fonctionnalité native. Même si de nombreux sites désactivent aujourd’hui les commentaires ou les délèguent à des outils externes, wp-comments-post.php
reste toujours inclus dans le cœur de WordPress pour assurer la compatibilité avec les thèmes, plugins ou cas d’usage qui exploitent cette fonctionnalité standardisée.
Son URL est donc toujours accessible par défaut depuis n’importe quelle installation WordPress, sous la forme :
https://example.com/wp-comments-post.php
Bien qu’il ne contienne aucune interface graphique, ce fichier est déclenché automatiquement par le CMS chaque fois qu’un internaute envoie un commentaire via un article ou une page autorisant cette interaction.
Comment fonctionne wp-comments-post.php techniquement ?
Le fichier wp-comments-post.php
fait partie de ces éléments discrets mais fondamentaux du fonctionnement natif de WordPress. Bien qu’il soit relativement compact, il orchestre toute la mécanique de validation, de sécurisation et d’enregistrement des commentaires. Il s’appuie sur des fonctions internes, des vérifications conditionnelles et une série de filtres et d’actions qui le rendent hautement personnalisable par les développeurs.
Voici une synthèse des étapes techniques clés de son fonctionnement, présentée sous forme de tableau :
Étape | Description |
---|---|
Chargement de l’environnement WordPress | Le fichier commence par require_once( dirname( __FILE__ ) . '/wp-load.php' ); pour initialiser le CMS. Cela permet d’avoir accès aux fonctions internes comme get_post() , wp_filter_comment() et wp_insert_comment() . |
Validation du POST | Il vérifie la présence et la validité de $_POST['comment_post_ID'] . Le post doit exister, être public et accepter les commentaires. |
Vérification du contenu | WordPress exige que certains champs soient renseignés : nom, email, contenu. Il applique aussi des filtres anti-XSS, HTML et injection via sanitize_text_field() ou esc_html() . |
Protection anti-duplication | Un hash MD5 basé sur le contenu, l’auteur et le post est généré pour bloquer l’insertion de commentaires identiques. Cela limite le flood de commentaires. |
Application des hooks | Les hooks pre_comment_* (comme pre_comment_content , pre_comment_author , etc.) permettent aux plugins de modifier ou bloquer dynamiquement les données avant insertion. |
Insertion en base | Via wp_insert_comment() , les données sont insérées dans la table wp_comments , avec un statut : approve , hold ou spam . |
Redirection | Une fois le traitement terminé, WordPress redirige l’utilisateur vers l’article d’origine avec un ancrage #comment-ID , ou vers un message indiquant que le commentaire est en attente de modération. |
Exemple de formulaire appelant wp-comments-post.php
<form action="https://example.com/wp-comments-post.php" method="post">
<textarea name="comment"></textarea>
<input type="hidden" name="comment_post_ID" value="123" />
<input type="submit" value="Envoyer votre commentaire" />
</form>
Ce formulaire est généré dynamiquement par WordPress en fonction du thème actif et des options activées (utilisateur connecté, commentaires ouverts, modération activée, etc.).
Les faiblesses de sécurité associées à wp-comments-post.php
Le fichier wp-comments-post.php
étant accessible publiquement par toute personne (y compris des robots), il constitue une surface d’attaque fréquente pour les spammeurs et les scripts automatisés. Voici les principales menaces connues :
- Spam massif de commentaires : les bots publient des dizaines voire des milliers de messages contenant des liens vers des sites malveillants ou douteux (phishing, casinos, contenus adultes, etc.) ;
- Injection de contenu malicieux : malgré les protections natives, certains scripts tentent d’injecter du JavaScript, des iframes ou du HTML masqué via le champ
comment
; - Attaques DDoS ciblées : en bombardant le fichier
wp-comments-post.php
avec des requêtes POST volumineuses, certains bots peuvent dégrader les performances d’un serveur web mal dimensionné ; - Bypass de validation : sur des sites mal sécurisés, l’absence de vérification du champ
_wpnonce
ou des plugins mal conçus peut permettre des soumissions automatisées non filtrées.
WordPress a intégré au fil du temps des protections supplémentaires pour contrer ces attaques :
check_comment_flood_db()
pour bloquer les commentaires trop rapprochés dans le temps depuis la même IP ou le même utilisateur.- Filtrage HTML via
wp_filter_kses()
pour supprimer les balises dangereuses. - Système de nonce et de cookies pour valider l’origine d’une soumission (introduit avec
wp_nonce_field()
).
Mais ces mesures natives ne sont pas toujours suffisantes. Il est donc conseillé d’ajouter des couches de protection supplémentaires (antispam, captcha, honeypot, blacklist IP, etc.) pour contrôler les soumissions sur ce fichier très exposé.
Les bonnes pratiques pour sécuriser l’accès à wp-comments-post.php
Étant exposé publiquement et accessible à tous les visiteurs (humains comme robots), le fichier wp-comments-post.php
doit être protégé activement pour éviter les abus. Voici une série de recommandations techniques et stratégiques à mettre en place pour renforcer sa sécurité :
-
- Activer l’antispam natif ou un plugin spécialisé
WordPress intègre depuis longtemps la prise en charge de plugins d’antispam qui analysent les données de commentaire avant insertion. Voici trois solutions fiables :- Akismet (plugin officiel de WordPress.com) : filtre les commentaires indésirables en s’appuyant sur une base de données collaborative mondiale.
- Antispam Bee : efficace, léger et sans besoin de compte externe, idéal pour les sites européens sensibles à la RGPD.
- CleanTalk : solution cloud complète avec protection en temps réel, très utile sur des sites à fort trafic ou à portée internationale.
- Ajouter un reCAPTCHA sur le formulaire de commentaire
L’intégration d’un reCAPTCHA empêche les robots d’envoyer automatiquement des requêtes verswp-comments-post.php
. Plusieurs plugins le permettent :- WPForms : avec sa fonction native de champ reCAPTCHA (v2 ou v3).
- Advanced noCaptcha & Invisible Captcha : permet de protéger à la fois les commentaires, l’inscription, et le login.
- Simple Google reCAPTCHA : une solution rapide à configurer si vous utilisez déjà les formulaires natifs WordPress.
- Restreindre l’accès à wp-comments-post.php au niveau serveur
Le fichierwp-comments-post.php
est une porte d’entrée directe pour les soumissions de commentaires, et à ce titre, il peut être ciblé par des scripts de spam provenant de serveurs situés à l’étranger (notamment depuis des IP russes, chinoises ou brésiliennes, souvent signalées pour du spam automatisé ou des attaques DDoS). Il est donc judicieux de limiter son accès à certaines adresses IP ou plages d’IP, en fonction de votre audience réelle.Vous pouvez le faire en configurant des règles dans votre serveur web Apache via le fichier.htaccess
, ou via un bloclocation
dans Nginx.Exemple pour Apache (.htaccess)
<Files wp-comments-post.php> Order Deny,Allow Deny from all Allow from 192.168.1.100 Allow from 203.0.113.45 </Files>
Ici, seules les IP spécifiées peuvent soumettre des commentaires. Cela peut être utile si vous avez un intranet, un site à accès restreint, ou une audience ciblée géographiquement.
Exemple pour Nginx
location = /wp-comments-post.php { allow 192.168.1.100; allow 203.0.113.45; deny all; }
Sur les sites ouverts au public mais fortement ciblés par des attaques internationales, il est également possible de bloquer certaines plages IP par pays. Par exemple, vous pouvez bannir les plages IP correspondant à certains AS ou zones géographiques connues pour leur activité abusive (Chine, Russie, Ukraine, Iran…), soit via Nginx directement, soit via un pare-feu applicatif (Cloudflare, Wordfence, etc.). Si vous utilisez un CDN comme Cloudflare, vous pouvez aussi définir une règle WAF personnalisée qui bloque toutes les requêtes POST vers
/wp-comments-post.php
en provenance d’un pays spécifique ou d’une IP listée comme malveillante dans leurs bases de données.Attention : ne bloquez jamais trop agressivement si votre site reçoit des commentaires du monde entier. Dans ce cas, privilégiez un reCAPTCHA et une modération intelligente à un blocage IP strict.
- Activer l’antispam natif ou un plugin spécialisé
- Vérifier l’origine des requêtes avec un referer ou un nonce
L’une des protections simples consiste à inspecter leReferer
HTTP, ou mieux, à intégrer unnonce
WordPress généré viawp_nonce_field()
. Cela garantit que la requête provient bien d’un formulaire légitime de votre site :<?php wp_nonce_field( 'comment_nonce_action', 'comment_nonce_field' ); ?>
Et côté traitement :
if ( ! isset( $_POST['comment_nonce_field'] ) || ! wp_verify_nonce( $_POST['comment_nonce_field'], 'comment_nonce_action' ) ) { wp_die( 'Requête non autorisée.' ); }
Cette vérification empêche un tiers d’envoyer des données vers
wp-comments-post.php
sans passer par votre interface front-end sécurisée.
En cumulant ces approches (plugin antispam, reCAPTCHA, règles serveur, validation côté PHP), vous renforcez considérablement la résistance de wp-comments-post.php
face aux attaques par spam ou automatisées, tout en préservant l’expérience utilisateur des vrais visiteurs.
Peut-on supprimer ou désactiver wp-comments-post.php ?
La réponse est claire : non, il ne faut jamais supprimer le fichier wp-comments-post.php
. Ce fichier fait partie intégrante du cœur de WordPress et est utilisé comme point d’entrée standard pour enregistrer tout commentaire via le formulaire natif du CMS. Sa suppression pourrait provoquer des erreurs PHP fatales, casser certains plugins ou thèmes, et gêner des mécanismes de validation AJAX liés aux commentaires.
En revanche, si vous n’utilisez pas la fonction de commentaire sur votre site (ce qui est courant sur les sites vitrine, e-commerce ou corporate), vous pouvez désactiver fonctionnellement son usage de manière sécurisée et propre, sans supprimer de fichier.
Désactiver les commentaires dans WordPress (côté PHP)
Vous pouvez désactiver les commentaires globalement en utilisant deux filtres WordPress dans le fichier functions.php
de votre thème ou dans un plugin personnalisé :
add_filter('comments_open', '__return_false');
add_filter('pings_open', '__return_false');
Ces deux lignes empêchent toute ouverture de nouveaux commentaires ou de rétroliens sur l’ensemble des contenus (articles, pages, types personnalisés). Cette méthode est légère, propre et réversible à tout moment.
Désactiver via un plugin de sécurité
Des plugins comme Wordfence, iThemes Security ou WP Hardening offrent des fonctionnalités plus avancées. Ils permettent par exemple de :
- bloquer les requêtes entrantes vers
wp-comments-post.php
en dehors de certains pays/IP (filtrage géographique) ; - déclencher une alerte si ce fichier est sollicité alors que les commentaires sont désactivés ;
- intégrer un pare-feu applicatif qui filtre les soumissions suspectes ou malformées.
Sur un site professionnel ou exposé au spam, cela permet de combiner désactivation fonctionnelle et renforcement de la sécurité au niveau du serveur ou du plugin de sécurité.
Blocage via .htaccess ou Nginx
Pour aller plus loin, vous pouvez bloquer manuellement l’accès HTTP à ce fichier depuis le serveur web :
Apache (.htaccess WP)
<Files wp-comments-post.php>
Order allow,deny
Deny from all
</Files>
Nginx
location = /wp-comments-post.php {
deny all;
}
Attention toutefois : ce type de blocage est définitif et empêchera tous les utilisateurs (même authentifiés) de publier des commentaires (y compris via les plugins de gestion de commentaires personnalisés). Il ne doit être utilisé que si vous êtes certain de ne plus avoir besoin de cette fonctionnalité sur l’ensemble du site. Supprimer un fichier natif de WordPress n’est donc jamais recommandé. Mieux vaut désactiver sa fonction via des hooks, des plugins ou une restriction côté serveur. Cela garantit une meilleure compatibilité avec les futures mises à jour et limite les risques de dysfonctionnement, tout en répondant aux exigences de performance et de sécurité.
0 commentaires