Qu’est-ce que le fichier wp-comments-post.php dans WordPress ?

Par Xavier Deloffre

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

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 vers wp-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 fichier wp-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 bloc location 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.

  • Vérifier l’origine des requêtes avec un referer ou un nonce
    L’une des protections simples consiste à inspecter le Referer HTTP, ou mieux, à intégrer un nonce WordPress généré via wp_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é.

Xavier Deloffre

Xavier Deloffre

Fondateur de Facem Web, agence implantée à Arras et à Lille (Hauts-de-France), je suis spécialiste du Web Marketing, formateur expérimenté, et blogueur reconnu dans le domaine du Growth Hacking. Passionné par le référencement naturel (SEO) que j'ai découvert en 2009, j'imagine et développe des outils web innovants afin d'optimiser la visibilité de mes clients dans les SERPs. Mon objectif principal : renforcer leur notoriété en ligne par des stratégies digitales efficaces et créatives.

0 commentaires

Soumettre un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Besoin de visibilité ?

☑️ Experts du référencement

☑️ + de 12 ans d’éxpérience

☑️ + 500 clients satisfaits

☑️ Création de sites

☑️ Audit SEO

☑️ Conseil SEO

☑️ Référencement de sites

☑️ Devis gratuit