Gérer un site WordPress  : usages, fonctionnalités et sécurisation

Cette rubrique (retours d’expérience) est dédiée aux retours d’expérience de projets consacrés aux données de la recherche en SHS (stockage, traitement, exposition, signalement, diffusion, archivage).

Nous publions aujourd’hui un article très complet de Marc Renneville, directeur du CLAMOR, qui présente plusieurs aspects essentiels concernant la gestion d’un site utilisant le logiciel WordPress.
En effet, nombreux sont les sites web, les blogs de chercheurs et les sites de projets de recherche qui sont développés en WordPress. Nous sommes heureux de partager ces quelques « recettes » et recommandations pour faire le meilleur usage de ce CMS qui a démontré ces dernières années sa capacité à répondre à des besoins variés du monde de la recherche.

Ce bref article a pour unique but de partager une expérience d’administrateur de site ayant subi des attaques visant tant le détournement de contenu que l’utilisation malveillante des ressources du serveur. La multiplication de ces attaques a nécessité le déplacement du contenu du site sur un autre serveur, mobilisant ainsi de nombreuses heures d’intervention et, au passage, quelques ajustements sur la configuration du site piraté. Nous avons pensé avec Joël Marchand, responsable de l’infrastructure numérique de la TGIR Huma-Num, que ce retour d’expérience pourrait être utile à d’autres collègues. On trouvera donc ici une réflexion et quelques solutions visant à faciliter la mise en œuvre de WordPress dans le cadre d’une activité de recherche en sciences humaines et sociales.

Attention toutefois, WordPress évolue vite et les informations livrées ici sont évidemment à actualiser en fonction de la date d’usage.

1. Pourquoi choisir WordPress ?

WordPress (WP ensuite) est un système de gestion de contenu (SGC/CMS) web gratuit et open-source. Il est basé sur la technologie php/MySQL. Sa popularité repose sur sa notoriété, sa gratuité, sa simplicité d’utilisation et l’importante communauté de développeurs qui suit le projet. WP cumule les avantages d’être devenu un quasi-standard tout en restant très personnalisable à deux niveaux : dans l’apparence visuelle du site grâce au « thème » choisi, dans les fonctionnalités que l’on peut lui ajouter par l’installation de « plugins » très variés, portant aussi bien sur la gestion des statistiques, du SEO (Search Engine Optimization), de la mémoire serveur, des medias etc.
Même si d’autres CMS open source permettent de produire des sites équivalents en qualité, WP est désormais installé sur près de 28% des sites web (étude W3Techs). Il domine largement le seul marché des sites réalisés avec un SGC/CMS avec 59% de part d’installation, très loin devant Joomla (7%) et Drupal (5%)
En sciences humaines et sociales, le plus important exemple francophone d’utilisation de WP multisites et plurilingue est la plateforme hypotheses.org gérée par Open Edition. Lorsqu’un chercheur ouvre un carnet de recherche, l’équipe Open Edition lui ouvre un WP.

WP n’est toutefois pas la panacée de la publication numérique et il ne répond pas à tous les besoins courants de la recherche avec la même facilité. Si l’on souhaite par exemple gérer un site proposant des collections de documents et/ou des expositions, on ne saurait trop recommander le SGC/CMS Omeka mis au point par le Roy Rosenzweig Center for History and New Media (http://omeka.org). Ce SGC/CMS simple et puissant est depuis 2016 mis à disposition pour des projets de recherche par la TGIR Huma-Num (voir cet exemple http://chs.huma-num.fr).
Par ailleurs, la plupart des projets numériques complexes nécessitent l’intégration et la combinaison de plusieurs solutions techniques dépassant de loin les compétences d’un chercheur ou d’une équipe de recherche sans compétences informatiques.

WP doit donc être utilisé par les chercheurs pour ce qu’il est : un éditeur de contenu facile à installer, facile à gérer et répondant à des besoins basiques tel qu’un site présentant un projet de recherche ou une institution. Au-delà de ces usages, mieux vaut prendre conseil avant d’arrêter son choix car une solution mutualisée est toujours préférable à une solution individuelle.

2. WordPress est-il fiable ? Sécuriser le site et ses données

C’est là le revers de son succès : WordPress étant très répandu, il est aussi bien connu des hackers. Ses moindres failles sont très rapidement exploitées et les mises à jour de sécurité sont en conséquence très fréquentes. WordPress est donc une solution de publication fiable sous réserve de vigilance. Voici quelques préconisations pour mettre en œuvre cette vigilance.

2.1 Lors de l’installation

Première recommandation : il faut choisir un hébergeur fiable. Si votre serveur est une passoire, les protections du CMS n’y pourront rien et les intrusions ne seront pas contrôlables. Malheureusement, il n’existe pas ici de solution univoque. La fiabilité de l’hébergeur n’est démontrée que par l’expérience et par l’usage, l’existence et l’efficacité de son pare-feu, de ses administrateurs etc.

L’administrateur/webmestre du site peut participer à cette sécurisation pour la partie WP. Par exemple, il faut bannir absolument un nom d’utilisateur en « admin » et renseigner un nom d’utilisateur et un mot de passe difficiles à « cracker » par des robots . Voir quelques conseils à ce sujet (https://www.symantec.com/region/fr/resources/mots_passe.html)
Si le site est déjà en production, il faut vérifier les login des noms d’utilisateur et modifiez-les si besoin en accord avec les personnes liées.

2.2 Lors de la personnalisation

Cette étape est importante. Des failles de sécurité peuvent provenir du noyau WP mais il existe une veille efficace et réactive sur ce composant. Ce n’est pas toujours le cas pour les thèmes et les plugins, beaucoup plus dépendants de la communauté WP. Pour le choix du thème comme pour celui des plugins, il faut se limiter à l’offre proposée sur la plateforme officielle de WordPress.
Les ressources présentes sur ce site présentent en effet l’intérêt d’être évaluées par la communauté des utilisateurs. Vous y trouverez une évaluation de la compatibilité avec votre version de CMS et vous pourrez vous faire une idée de la qualité de la ressource proposée par l’activité de son compte, la fréquence des mises à jour et des résolutions de problèmes. Il faut tester les plugins un par un, ne conserver que les plus utiles, ne pas faire de doublons. Souvent, un hébergement institutionnel facilite les choix. Pour les statistiques de visites par exemple, Open Edition propose Awstats et la TGIR Huma-Num peut délivrer un compte utilisateur Piwik (http://piwik.org). Là encore, un plugin permet de simplifier la consultation des statistiques en les rendant directement accessibles dans le tableau de bord de WP. La procédure est la suivante :

  • demander l’activation d’un compte pour un site de recherche auprès de la TGIR Huma-Num
  • une fois le compte activé par vos soins, on se rend sur l’interface https://piwik.huma-num.fr pour copier la clef « token_auth » que l’on trouve dans le menu Plate-forme/API
    Côté WP, on installe un plugin Piwik (par ex : https://fr.wordpress.org/plugins/wp-piwik/)

Une fois le plugin installé, on renseigne l’onglet « connection à Piwik » comme suit :

  • mode piwik = auto-hébergé – API HTTP par défaut
  • Piwik URL = https://piwik.huma-num.fr
  • Clef partagée (Token_auth) = clef récupérée sur piwik.huma-num.fr
  • Site déterminé = adresse du site déclaré
  • Autoconfig

Les statistiques Piwik seront dès lors visibles dans le tableau de bord, sous la ligne « Mise à jour ».

Parmi les plugins WP mis à disposition par Huma-Num, notons aussi ISIDORE Suggestions. Totalement développé et maintenu par la TGIR Huma-Num, ce plugin permet d’afficher sur une page des références extraites d’ISIDORE (la plateforme de recherche en Sciences Humaines et Sociales). Pour en savoir plus sur ses usages et son installation, voir la page dédiée :
http://humanum.hypotheses.org/1145

2.3. Sécuriser le site

Pour aller plus loin dans la sécurisation du site, on peut suivre les conseils présents sur la page suivante :
http://www.fabricecourt.com/formation/securiser-efficacement-son-site-wordpress/
Attention, tous ces conseils doivent être bien compris avant d’être mis en œuvre. Une erreur à ce niveau peut ouvrir une faille difficile à repérer ensuite.

On peut aussi s’en remettre à… un plugin. Il en existe plusieurs sur ce thème et ils permettent de choisir des niveaux de sécurisation variés. Voir par exemple :
https://premium.wpmudev.org/blog/ithemes-security-plugin-review/
Là encore, prudence. Un plugin de sécurité agissant sur des fonctions vitales de WP, il peut mettre en échec d’autres plugins, voir une partie des fonctionnalités de votre thème.

2.3 En usage courant

Même si on ne publie rien, il faut se rendre régulièrement dans l’administration, au moins une fois par mois, pour mettre à jour le noyau WP et ses plugins. Désactiver les plugins inactifs, supprimer les plugins dont vous n’aurez plus l’usage. Vérifier l’activité d’un plugin qui n’est plus mis à jour depuis plusieurs mois. Le remplacer le cas échéant par un plugin actif ou plus récent. Les mises à jour de sécurité mineures sont automatiques depuis la version 3.7 de WP. Il est d’ailleurs possible d’automatiser la mise à jour des versions majeures de WP ainsi que les thèmes et les plugins. Ici encore, deux voies possibles : insertion de code ou plugin.
Le code est à insérer dans le fichier functions.php.

Exemple pour une automatisation complète :

/*section MAJ auto des composants du site */
/*Plugins et thèmes */
add_filter( 'auto_update_plugin', '__return_true' );
add_filter( 'auto_update_theme', '__return_true' );
/*MAJ WP versions dev et majeures */
add_filter (‘allow_dev_auto_core_updates’, ‘__return_true’);
add_filter (‘allow_major_auto_core_updates’, ‘__return_true’);

À chaque mise à jour, WP enverra un message à l’adresse administrateur du site. Tout message reçu de wp@votrenomdedomaine méritera donc une petite visite de contrôle.

On peut aussi procéder à ces réglages par l’installation d’un plugin (par ex : https://wordpress.org/plugins/update-control/)

2.4. Sauvegarder ses données

Mieux vaut prévenir… La préservation des données de contenu passe par la sauvegarde régulière du site, en adoptant la fréquence de ces sauvegardes à l’activité éditoriale. WP propose en standard une fonction d’export/import des données. Certains plugins permettent de réaliser cette opération sans aucune connaissance technique. Voir par les conseils contenus dans les pages :
https://www.gregoirenoyelle.com/sauvegarder-site-wordpress-avec-extension-backwpup/
et http://www.windtopik.fr/sauvegarder-son-site-backwpup/.

Attention : par défaut, la sauvegarde de la base est réalisée au sein même d’un dossier WP. Si le serveur est attaqué, la sauvegarde n’est plus à l’abri. Il est donc fortement recommandé de conserver ses données sur un autre serveur ou de les télécharger via un accès FTP pour les stocker ailleurs. Cette option de sauvegarde externe est proposée par certains plugins. Cette sauvegarde peut aussi être prise en charge par l’hébergeur. Un site hébergé par la TGIR Huma-Num bénéficie ainsi d’une sauvegarde externe de l’arborescence et de la base de données chaque nuit.

3. Mon site est contaminé. Que faire ?

Il faut déterminer l’intensité et l’origine du problème qui peut être variable. Cette vérification n’est généralement pas à la portée du seul webmestre et elle revient plutôt à l’administrateur réseau.
Le webmestre peut tenter dans un premier temps de restaurer les données en mettant à jour le noyau WP et ses plugins. Parfois, cela suffit… Mais si l’attaque est réitérée, il faut surtout tenter de cerner l’origine de la faille en menant l’enquête avec l’administrateur réseau. Il importe en effet de savoir si la faille vient du CMS ou du réseau.
Dans ce dernier cas, c’est souvent une solution extrême qui s’impose : il faut transférer les contenus du site vers un nouvel environnement fiable. S’il existe une sauvegarde externe et saine, il suffit de l’installer. S’il n’existe pas de sauvegarde saine, l’administrateur réseau ouvre :

  • une nouvelle instance WP avec un nom de domaine temporaire.
  • un nouveau compte phpMyAdmin.

Le webmestre :

  • prépare un export SQL de la base de données en notant bien les champs souhaités (articles, pages, catégories, commentaires, auteurs…).
  • importe via le nouveau compte phpMyAdmin la base SQL en vérifiant l’intégrité des tables.
  • récupère par FTP les medias associés aux articles. Ces medias sont contenus dans le sous-répertoire wp/content/uploads. Attention : il faut bien vérifier le contenu de tous les sous-dossiers medias avant de les transférer vers le nouveau site. Tous les medias doivent en effet correspondre à des fichiers associés aux articles (images, vidéos, PDF etc.) On ne doit trouver ici AUCUN autre fichier comme xml-rpc ou des fichiers contenant une extension .php, .js etc. Tout fichier n’étant pas clairement assimilable à un média connu du webmestre est suspect et doit être supprimé avant dépôt dans le nouveau site.

Une fois ces opérations réalisées, il reste à déclarer dans WP la bonne adresse du site (dans Réglages/Général/Adresse web du site). Si l’adresse est identique à celle du site contaminé, il convient de modifier d’abord cette dernière (en « old » ou autre) et de déclarer le nouveau nom dans le fichier CNAME de votre nom de domaine (disponible chez votre fournisseur de nom de domaine. Voir l’exemple pour Gandi :
https://wiki.gandi.net/fr/dns/zone/edit

Attention, là encore, si vous ne comprenez pas bien la manœuvre, mieux vaut ne pas agir et obtenir de l’aide car le site risque tout simplement de devenir inaccessible en cas d’erreur de syntaxe.

Une fois ces opérations réalisées, le nouveau site est prêt à fonctionner avec les contenus récupérés. S’il est bien visible en public, accessible en mode administrateur et conforme à l’ancienne version, l’ancienne installation doit être supprimée et le serveur nettoyé (administrateur réseau).

4. Pour aller plus loin dans la personnalisation de votre site

4.1 Ajouter un favicon

Le favicon, c’est cette mini-icône qui s’affiche à côté de l’URL de votre site. Avant, son installation était assez simple mais désormais, il faut prévoir le comportement multiplateforme, prévoir les différentes taille, les différents formats. Heureusement, il existe des solutions en ligne très efficaces. La procédure à suivre est détaillée sur cette page :
https://wpchannel.com/generer-favicon-multi-plateforme-wordpress/
Notez que la mise en place nécessite l’insertion du code (fourni par le service en ligne) dans le fichier header.php du site juste après la balise.

Exemple :
<link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png">
<link rel="icon" type="image/png" href="/favicon-32x32.png" sizes="32x32">
<link rel="icon" type="image/png" href="/favicon-16x16.png" sizes="16x16">
<link rel="manifest" href="/manifest.json">
<link rel="mask-icon" href="/safari-pinned-tab.svg" color="[couleur de votre choix]">
<meta name="theme-color" content="[couleur de votre choix">

En suivant bien la procédure dans la page indiquée en lien ci-dessus, c’est facile. Il suffit de prévoir l’image souhaitée pour la soumettre en ligne. Pour l’ajout de code, inutile d’ouvrir le Notepad++. Cette opération peut se faire directement sous WP via le menu Apparence/Editeur en sélectionnant le bon fichier dans la colonne de droite.

4.1 Créer un thème « enfant »

La mini-crise « sécurité » que nous avons subie nous a incités à suivre cette recommandation de la communauté WP : si vous modifiez l’apparence de votre thème, il faut créer un thème « enfant », dont la feuille de style CSS dédié sera indépendante du thème parent. Avantage : vous pourrez mettre à jour le thème sans perdre vos éléments de personnalisation.
Voici une bonne synthèse sur la création d’un thème enfant :
https://wpmarmite.com/child-theme-wordpress/

Même si on ne modifie pas le style du thème, il est bien rare que l’on ne modifie pas le header (si on veut un favicon) ou le footer.php pour ajouter, par exemple, une adresse url ou une expression remplaçant l’expression « fièrement propulsé par WP ». Par ex :
/**infos site */
Titre de mon site
Adresse postale
Webmestre : Nom du webmestre
Hébergeur : TGIR - Huma-Num

Dès que l’on modifie le thème original, la création du thème enfant est recommandée. Heureusement, ce n’est pas très compliqué avec l’aide d’un… plugin.
Par exemple :
https://wordpress.org/plugins/child-theme-generator/
Une fois le plugin installé, la création d’un thème enfant (on peut en créer plusieurs) est simple. Elle permet de disposer des fichiers functions.php (celui qui permet d’automatiser les mises à jour) et style.css. Ensuite, c’est selon vos besoins. Pour modifier un fichier du thème parent (header, footer..) et le rendre actif dans le thème enfant, il suffit d’en faire une copie via ftp dans le dossier du thème enfant puis de le modifier avec l’éditeur WP. Ainsi, il sera conservé lors des mises à jour du thème parent.

Dernière astuce : la personnalisation de l’image du thème est possible en récupérant le fichier screenshot.png contenant dans le répertoire du thème enfant. Il suffit ensuite de recharger la version souhaitée, avec le même nom de fichier et on aura le plaisir de voir notre image de thème enfant aux côtés des thèmes « officiels »

4.3 Gérer le bilinguisme. Plugin or not plugin ?

WP ne gère pas nativement le bilinguisme mais cette fonctionnalité peut être acquise par l’installation de plugins. Pour en savoir plus, voir cet article :
https://wpmarmite.com/wordpress-multilingue/
Pour la première version du site CLAMOR, nous avions adopté le plugin Polylang afin de gérer deux versions du site (FR-EN). Bien que l’installation ait été délicate, ce plugin nous a donné ensuite toute satisfaction, les mises à jour étant régulières et sans incidents. Toutefois, lors du transfert du contenu de notre site, nous avons perdu (probablement par le biais d’une erreur de notre part) l’association des versions d’articles. Tous les articles bilingues se sont dissociés en deux articles.

Cet incident nous a incité à réfléchir à l’utilité d’une réinstallation. Comme nous gérons peu d’articles sur ce site, nous avons opté pour une unique page d’accueil en langue française, en jouant sur la structuration du menu. Cette nouvelle présentation est très proche de la précédente et elle permet de présenter toutes les pages dans les deux langues. La seule différence, c’est que nous n’avons plus besoin de plugin

4.4 Et pour finir, quatre astuces rédactionnelles

Justifier les paragaphes
WP avance et fait parfois disparaître des fonctions. Ainsi, avec la version 4.7 nous avons perdu dans l’éditeur de texte le bouton qui permet de justifier les paragraphes. Heureusement, cette fonction n’est pas abandonnée mais seulement invisible. Elle reste active en utilisant le raccourci clavier « shift+alt+J ».

Page ou article ?
Les pages sont destinées à des informations stables dans le temps, les articles sont a priori des informations datables. On privilégie les pages pour un affichage statique. Un article placé dans une « catégorie » permet, lorsqu’on déclare cette dernière dans un menu, d’afficher tous les articles de la catégorie dans l’ordre de publication.

Menu à la carte
L’un des grands intérêts des dernières versions de WP est la structuration très souple des contenus du site par la construction à la carte de « menus ». Un menu peut être composé de pages, d’articles, de catégories et de liens personnalisés. Lorsqu’on souhaite construire un menu hiérarchisé combinant des liens vers des pages fixes et des rubriques alimentées par des flux d’articles, il peut être utile de déclarer des titres ne pointant pas sur un lien. Pour ces entrées, il faut créer un « lien personnalisé » avec un titre et, à la place de l’adresse url, mettre un « # ». Une fois le lien placé dans le menu, on l’ouvre et on supprime le « # ». On obtient ainsi en navigation un titre non cliquable.

Supprimer « category » dans les adresses
L’usage des catégories est bien utile sous WP mais le mot « category » dans les adresses urls du site n’est pas très élégant. Pour le supprimer, on peut déclarer un point [.] dans le menu réglages/permaliens/préfixe des catégories. Malheureusement, cette astuce bloque l’affichage des articles placés dans les catégories à partir du menu. Le mieux est donc de déclarer un mot ou une lettre. Par exemple, sur le site du Clamor (http://clamor.criminocorpus.org), nous utilisons le préfixe « les » et toutes les catégories ont des noms au pluriel.

Les remarques pour compléter ces quelques recettes sont les bienvenues. Mes remerciements à Joël Marchand pour la relecture.

Marc Renneville.
Directeur du CLAMOR. Centre pour les humanités numériques et l’histoire de la justice pénale, UMS 3726.


Laisser un commentaire

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