Sécuriser votre site web sous Drupal
La suite de nos articles sur la sécurité de vos sites web créés sous des CMS Open Source continue, après notre article traitant de WordPress et l’autre sur Joomla!. Nous vous présentons un article consacré à Drupal, et qui comporte des conseils et astuces pour sécuriser votre site web hébergé chez ADK Media.
Ces conseils pratiques vous aideront à la prévention contre un grand nombre d’attaques communes et répandues sur Internet. En plus, le site officiel Drupal.org offre une page spéciale (en anglais) pour la configuration sécurisée de Drupal, ainsi que des conseils (en anglais) pour développer avec un code sécurisé en PHP.
#1 – Mettez votre installation Drupal régulièrement à jour
C’est toujours la première recommandation que nous conseillons, la mise à jour régulière du CMS Drupal est essentielle pour la sécurité de votre site. Prenez l’habitude de visiter régulièrement le menu « Rapports / mises à jour disponibles » de votre espace d’administration. Vous y trouverez les mises à jour du Drupal Core ainsi que des modules et thèmes installés.
Pour vous tenir informé des mises à jour et news de Drupal, vous pouvez vous abonner à la mailing list à partir de cette page : http://drupal.org/news
#2 – Abonnez vous à la mailing list de sécurité
Drupal.org met à la disposition de tous les développeurs Drupal, une mailing-list spéciale, nous vous conseillons de vous y enregistrer sur l’adresse : http://drupal.org/security
#3 – Personnalisez votre login et mot de passe
Durant l’installation de Drupal, il est recommandé de choisir un identifiant et mot de passe personnalisés. Vous pourrez toujours les modifier même après la mise en ligne de votre site web, à partir du menu « Gestion des utilisateurs / Utilisateurs ».
Concernant le mot de passe, les règles élémentaires à suivre sont de le créer en 8 caractères ou plus, y utiliser des chiffres, caractères spéciaux et lettres en majuscule/minuscule. Il existe des outils en ligne qui vous permettent de générer rapidement des mots de passe comme le site Strong password generator.
#4 – Sauvegardez votre site et votre base de données de façon régulière
Sauvegarder régulièrement vos fichiers via FTP est une action recommandée, mais le plus important reste à sauvegarder votre base de données Drupal de façon continue. Vous pouvez le faire à partir de PHPMyAdmin en format .sql. La taille de ce fichier dépendra du nombre d’informations contenues sur votre site.
Vous pouvez également effectuer la sauvegarde entière ou partielle de votre site web, en utilisant la fonction de sauvegarde de cPanel offerte sur tous nos packs d’hébergement.
#5 – Utilisez des modules de sécurité
- Security Review est un module qui s’assure de la sécurité de l’environnement dans lequel vous installez Drupal. Il teste plusieurs paramètres comme les permissions des fichiers, erreurs de base de données, formats d’entrée.
- Login Security ajoute une sécurité supplémentaire à votre formulaire d’identification à l’espace d’administration de Drupal.
#6 – Ajoutez un préfixe aux tables de votre base de données Drupal
Pendant l’installation de Drupal, il vous sera demandé d’indiquer les détails de votre base de données, mais également un préfixe des tables de façon facultative. N’hésitez pas à remplir ce champ pour avoir des noms de tables personnalisés (ex : xyz_).
#7 – Écrire du code PHP sécurisé
Utilisez des fonctions de contrôle sur les sorties pour éviter les attaques par cross-scripting. Aucun contenu fourni par l’utilisateur ne doit être restitué tel quel dans le HTML.
- Utilisez check_plain ou theme(’placholder ’) pour le plain text.
- Utilisez check_markup ou filter_xss pour le balisage contenant du texte
- Utilisez la fonction t() avec les caractères de substitution @ ou % pour construire des chaînes traduisibles sûres
#8 – Codez les appels à vos bases de façon sécurisée
Utilisez la couche base de données correctement. Par exemple, ne concaténez jamais des données dans une requête SQL comme ceci :
<?php db_query('SELECT foo FROM {table} t WHERE t.name = '. $_GET['user']); ?>
A la place, utilisez les caractères de substitution avec db_query :
<?php db_query("SELECT foo FROM {table} t WHERE t.name = '%s' ", $_GET['user']); ?>
Également, utilisez db_rewrite_sql pour respecter les restrictions d’accès aux nodes. Les instructions SQL qui se réfèrent aux nodes ou à la table {node} doivent êtres emballées dans un appel à la fonction db_rewrite_sql() :
<?php $result = db_query(db_rewrite_sql("SELECT n.nid, n.title FROM {node} n")); ?>
L’accès aux nodes de Drupal requiert ces appels, sans quoi, les visiteurs pourraient avoir accès à des nodes pour lesquels ils n’ont pas d’autorisations d’accès.
#9– Téléchargez le Drupal Core et modules depuis le site officiel Drupal
Ne téléchargez jamais Drupal à partir de sites non officiels. Utilisez plutôt les fichiers d’installation téléchargés des sites Drupalfr.org et Drupal.org. D »autre part, l’équipe Drupal teste tous les modules avant de les proposer en téléchargement. Prenez donc l’habitude de télécharger ces modules à partir du site officiel Drupal au lieu des sites de leurs éditeurs :