Seize conseils de sécurité pour les développeurs de plugins et de thèmes WordPress
Publié: 2021-10-19On n'est jamais trop prudent !
Une grande partie de notre travail en tant que développeurs consiste à nous assurer que les sites et les plugins que nous construisons sont sécurisés.
Les entreprises ont besoin de solutions plus rapides avec des fonctionnalités de plus en plus complexes. Bien que ce soit un bon progrès, la construction de projets complexes nécessite également une configuration de sécurité appropriée. La sécurité de WordPress est l'un des aspects les plus importants du développement de sites Web.
Avec la complexité croissante des fonctionnalités, de nombreux développeurs passent à côté des principes de sécurité de base du développement de sites Web et d'applications Web. Il en résulte un site Web défectueux qui est ouvert aux cyberattaques et à d'autres risques.
Par conséquent, il est essentiel que vous mettiez en œuvre certains protocoles de sécurité de base pour le développement de sites Web et d'applications Web lors de la construction de votre projet.
Vous trouverez ci-dessous 16 conseils de sécurité pour les développeurs Web qui vous aideront à garder votre site sain et sauf.
1. Déterminez quelles données doivent être protégées
L'un des principes de sécurité les plus cruciaux pour le développement de sites Web est que vous n'avez besoin de stocker que les données nécessaires.
Lorsque vous développez un projet, vous devez vous poser ces trois questions :
- Quelles données l'entreprise doit-elle stocker ?
- Quelles données sensibles l'entreprise doit-elle chiffrer ?
- Si, pour une raison quelconque, les données sont compromises, dans quelle mesure cela pourrait-il nuire à l'entreprise ?
Plus vous stockez de données sensibles, plus le risque d'exposition est grand. Si vous devez stocker les données sensibles, vous devez les crypter afin qu'elles deviennent difficiles d'accès.
2. Mettre en œuvre la gestion des rôles et le contrôle d'accès
Lors de la conception d'un site Web, d'un plugin ou d'un thème, il est important de donner aux utilisateurs les privilèges les plus bas possibles.
Les privilèges doivent être limités afin que l'utilisateur n'obtienne que ce dont il a besoin et ne puisse pas accéder à d'autres zones.
Par exemple, les contributeurs devraient être limités à la possibilité de créer de nouveaux articles et pages, mais pas de les publier. Les éditeurs doivent pouvoir créer de nouveaux articles et les publier, mais pas pouvoir modifier la conception ou les plugins.
De même, lors du développement d'une fonctionnalité spécifique dans votre plugin ou thème que vous souhaitez restreindre, assurez-vous de créer de nouveaux rôles d'utilisateur WordPress lors de l'installation. Faites en sorte que les administrateurs en soient conscients, afin que les bons rôles soient attribués aux utilisateurs respectifs qui utiliseront le plugin ou le thème que vous développez.
Voici une représentation graphique rapide de l'apparence de la structure.
Cette approche minimise les problèmes car nous pouvons limiter les dégâts qu'un intrus peut faire. Vous pouvez également limiter les dommages causés par des erreurs ou des fautes d'un utilisateur curieux qui s'amuse dans des zones d'un site Web qu'il ne devrait vraiment pas y avoir.
Vous devez également restreindre l'accès au sein de l'équipe de développement en fonction de leur rôle.
3. Appliquer l'authentification
L'authentification de site Web est le processus de sécurité qui permet aux utilisateurs de vérifier leur identité pour accéder aux zones restreintes d'un site Web.
Lors du développement d'un thème ou d'un plugin, vous aurez certaines données qui doivent être restreintes tandis que certaines données sont visibles pour les utilisateurs. Par conséquent, il est important que vous ajoutiez des vérifications dans le code pour vérifier si l'utilisateur accédant aux données restreintes est authentifié et possède le rôle d'utilisateur correct.
De même, lors de la création d'un site Web, vous pouvez mettre en œuvre des pratiques de gestion de compte efficaces telles que l'application d'un mot de passe fort et l'authentification multifacteur pour protéger les données des utilisateurs.
L'authentification à deux facteurs est l'un des moyens les plus populaires d'implémenter l'authentification.
L'authentification à deux facteurs (2FA) est un processus en deux étapes dans lequel vous avez besoin d'un code supplémentaire ou d'un mot de passe à usage unique (OTP) pour vous connecter à votre site en plus du mot de passe de votre site Web. Cet OTP est généralement envoyé à un autre appareil par SMS, appel téléphonique ou une application 2FA reconnue telle que Google Authenticator, Authy, Duo Security et bien d'autres. La mise en œuvre de 2FA vous protège des attaques par force brute.
Si vous construisez votre site Web dans WordPress, découvrez ces outils incroyables qui vous permettent de sécuriser votre site Web.
- Limiter les tentatives de connexion : cet outil vous protège des attaques par force brute en limitant le nombre de tentatives de connexion. Il comprend également un anti-spam et une déconnexion automatisée des utilisateurs inactifs.
- WP2 FA : Le plugin WP2FA vous permet d'ajouter une authentification à deux facteurs à votre site Web en un instant. Il prend également en charge plusieurs applications 2FA telles que Google Authenticator, Authy, FreeOTP, Duo Security et plusieurs autres.
- Shield Security : Ce plugin ne prend pas en charge les applications 2FA telles que Google Authenticator et SMS 2FA, mais il est utile pour ceux qui utilisent YubiKey.
- WPassword : Ce plugin vous aide à appliquer des mots de passe forts pour votre site Web WordPress, à bloquer les utilisateurs avec trop de tentatives de connexion infructueuses et plus encore. Il s'intègre de manière transparente à WooCommerce et à d'autres plugins tiers.
4. Vérifiez votre thème ou plugin avant de le publier
Avant la publication d'un thème ou d'un plugin, vous devez vous assurer que votre code est aussi exempt d'erreurs que possible. Vous pouvez utiliser certaines dépendances de composeur pour détecter toute vulnérabilité dans votre code.
Certaines des dépendances recommandées pour les sites Web WordPress sont :
- Wpthemereview
- Normes de codage Wp
Ces normes de codage ont des règles de codage strictes comme toujours échapper les données avant de les imprimer, utiliser nonce pour toutes les demandes, nettoyer les données de demande avant de les utiliser, fournir les autorisations utilisateur appropriées, etc. pour aider à sécuriser votre code.
Ces outils sont parfaits si vous développez votre propre thème ou plugin.
Vous devriez également consulter WPScan Security Scanner. Il s'agit d'un excellent scanner de sécurité de site Web en ligne qui vérifie votre site Web pour détecter toute vulnérabilité.
5. Évitez certaines fonctions PHP
Certaines fonctions PHP telles que eval() et unserialize() peuvent exposer les données système et peuvent conduire à exposer les données du serveur, ce qui peut entraîner l'arrêt du serveur ou l'accès à toutes les informations du serveur à partir du pirate.
Voici quelques fonctions PHP que vous devriez éviter autant que possible :
eval() : eval peut exécuter du code PHP arbitraire. Cela pourrait exposer vos codes à des attaques par injection s'ils ne sont pas utilisés correctement.
serialize() ou unserialize() : n'utilisez pas serialize() ou unserialize() avec une entrée fournie par l'utilisateur. Les attaquants peuvent exploiter ces fonctions. Ils peuvent transmettre une chaîne avec un objet arbitraire sérialisé pour exécuter du code arbitraire.
md5() : Internet regorge d'avis sur les faiblesses cryptographiques de md5() 1 et est considéré comme peu sûr. Utilisez une meilleure fonction de hachage, telle que SHA-2.
sha1() : sha1() est une autre fonction de hachage qui ne doit pas être utilisée en raison de la nature rapide des algorithmes de hachage. Il est recommandé d'utiliser l'algorithme de hachage SHA-2 à la place de md5() dans n'importe quel framework moderne.
6. Utilisez des linters pour trouver des problèmes dans le code
Un outil Lint est un analyseur de code statique de base qui vérifie votre code source pour les erreurs de programmation et de style. Le ton de la voix de Linter doit être amical pour faire avancer le projet.
Les codes Lint sont un excellent moyen de trouver des vulnérabilités potentielles et de réduire les erreurs lors du développement d'un site Web ou d'une application. Vous pouvez utiliser certains linters de sécurité pour le développement PHP, JS et HTML.
Voici quelques outils notables pour l'analyse statique de vos codes PHP :
- PHP-Parallel-Lint
- SonarLint
- Psaume
- PHP peluches
Vous pouvez également utiliser SonarLint pour les peluches HTML et Javascript.
D'autres linters JS remarquables sont :
- JS Lint
- ES peluches
7. Supprimez le code et les plugins inutilisés
Avec des logiciels de plus en plus complexes, le potentiel de vulnérabilités dans le code augmente également. Les thèmes et plugins WordPress ne sont pas différents. Les fonctionnalités sans cesse croissantes de codes tels que HTML5, CSS et JavaScript permettent aux développeurs de créer des applications Web riches.
Cependant, la complexité croissante des applications est une épée à double tranchant. Bien qu'ils aident à fournir les fonctionnalités attendues par les utilisateurs, ils étendent également la surface d'attaque de l'application. Une mesure pour faire face à une telle vulnérabilité consiste à supprimer le code qui n'est pas utilisé.
Différents utilisateurs peuvent ne pas avoir besoin de toutes les fonctionnalités d'un site Web ou d'une application Web. En supprimant les fonctionnalités inutiles en fonction des besoins des utilisateurs dans chaque déploiement, vous pouvez réduire les surfaces d'attaque et les risques associés.
Si vous aimez développer des sites Web dans WordPress, nous vous recommandons d'opter pour des thèmes et des plugins qui répondent à vos besoins tout en étant légers en termes de code. Non seulement ils assurent la sécurité de votre site Web, mais ils contribuent également à l'optimisation des moteurs de recherche. Voici quelques-uns des meilleurs thèmes WordPress légers et les plus rapides disponibles.
8. Utilisez la validation côté serveur et côté client
Si vous aimez écrire des codes personnalisés, il est essentiel d'utiliser la validation côté client et côté serveur. La validation côté client permet d'éviter que l'utilisateur ne commette des erreurs courantes telles que la saisie incorrecte de données ou l'oubli de champs. Une telle validation intercepte les données invalides avant qu'elles n'atteignent le serveur, ce qui permet d'économiser du temps et de l'argent.
Imaginez, si la validation côté client ne se produit qu'après l'échec d'un aller-retour vers le serveur, vous serez confronté à des retards pour indiquer aux utilisateurs ce qu'ils ont fait de mal sans leur permettre de corriger leurs erreurs immédiatement.
Cependant, la validation côté client seule ne suffit pas comme mesure de sécurité. Vous devez également utiliser la validation côté serveur. La validation côté serveur vous protège contre les entrées malveillantes et autres vecteurs d'attaque.
9. Désinfectez toute entrée d'utilisateur et demande de données
La désinfection des entrées utilisateur est une mesure de cybersécurité consistant à auditer, nettoyer et filtrer les données des utilisateurs et des API de tout caractère et chaîne non autorisés ou indésirables afin d'empêcher l'injection de code nuisible dans le système.
Les pirates peuvent injecter des commandes spécifiques et exécuter des actions susceptibles de compromettre la sécurité de votre site Web. Le nettoyage des entrées aide à maintenir l'intégrité des données et améliore la sécurité du système.
10. Appliquer des correctifs permanents
Lors d'une vérification de sécurité, vous remarquerez peut-être certaines vulnérabilités qui réapparaissent de temps en temps. Vous devez déterminer la cause première des nouvelles vulnérabilités afin de pouvoir les éradiquer définitivement au lieu d'ajouter un correctif partiel.
Par exemple, très souvent, vous pouvez rencontrer des problèmes SQL / XSS dans le thème ou le plugin que vous développez. Dans un tel cas, au lieu de créer une vérification de nettoyage pour chaque entrée, créez une fonction/classe et faites-en une politique selon laquelle chaque fois qu'il y a une entrée utilisateur, toutes les données doivent être transmises via cette classe/fonction.
11. Évitez les erreurs de configuration et les défauts de sécurité
Les erreurs de configuration de sécurité se produisent lorsque les paramètres de sécurité ne sont pas définis et mis en œuvre et que les valeurs par défaut sont conservées. Ne pas mettre en œuvre des contrôles de sécurité ou les mettre en œuvre avec des erreurs peut augmenter la probabilité d'avoir des vulnérabilités dans le thème, le plug-in ou le site Web que vous créez.
Une mauvaise configuration se produit souvent parce qu'un système, un administrateur de base de données ou un développeur n'a pas correctement configuré le framework d'une application, ce qui ouvre des voies dangereuses pour les pirates.
Assurez-vous que la configuration par défaut est sécurisée et ne définissez pas automatiquement de mots de passe (si nécessaire). Par exemple, si le plug-in utilise un répertoire dans lequel les utilisateurs peuvent télécharger des fichiers, demandez toujours aux utilisateurs de définir leurs mots de passe et leur chemin de répertoire.
12. Tenez-vous informé et mis à jour
La cybersécurité est un domaine en constante évolution. Vous devez être au courant des dernières mises à jour de sécurité et des risques émergents afin de pouvoir suivre les développements et atténuer les menaces nouvelles et émergentes dans votre code.
En tant que développeur, il est utile de se tenir informé de l'actualité et d'écrire un code plus sécurisé, quelles sont les meilleures pratiques pour sécuriser le codage, mieux assainir le code et mieux gérer les entrées des utilisateurs.
Pour ce faire, suivez les experts en ligne et tenez-vous au courant de votre blog de développement Web préféré. Vous lisez déjà celui-ci. Vous êtes donc bien parti.
Voici quelques-unes des meilleures ressources sur WordPress Security.
- Blog WP White Security
- Blog WordFence
- Blog Sucuri
13. Maintenir le code
Le code que vous écrivez aujourd'hui pourrait ne pas être sécurisé demain. De nouvelles variantes de vulnérabilité continuent d'apparaître et nécessitent également des mises à jour constantes de la part d'un développeur.
Lorsque vous ajoutez de nouvelles fonctionnalités à un plugin ou à un thème, vérifiez qu'il n'affecte pas la sécurité des autres modules ou classes, ou fonctions dans le code. Si c'est le cas, vous devez mettre à jour le code pour corriger les problèmes.
Vous pouvez également utiliser des outils comme GitHub pour maintenir le code de votre thème ou plugin. Cela vous aidera à suivre le code et à résoudre les problèmes plus rapidement. La sécurité évolue toujours. Pour suivre les dernières tendances, il est essentiel de renouveler constamment vos tests de sécurité afin de pouvoir trouver des vulnérabilités et de les améliorer.
14. Mettez régulièrement à jour vos progiciels
C'est une évidence.
La mise à jour de vos progiciels tels que PHP, Javascript, HTML et autres aide à résoudre les nouveaux problèmes de sécurité. L'amélioration de la sécurité des logiciels est toujours une préoccupation constante et, à cette fin, nous nous tenons toujours au courant de la dernière version de ces logiciels.
15. Collaborez avec votre équipe
Prenez note des tickets de sécurité qui sont transmis à votre équipe d'assistance. Si vos clients signalent des problèmes de sécurité, faites-en une priorité pour les résoudre. Votre utilisateur final donne le meilleur retour sur votre travail, alors utilisez-le bien !
Discutez des problèmes de sécurité avec l'équipe de développement et assurez-vous que tout correctif que vous développez résout le problème de sécurité et ne cassera rien d'autre avant de le rendre public. Si vous avez besoin de collaborer souvent avec des coéquipiers ou de travailler avec de gros clients qui ont des départements entiers impliqués dans le support, c'est une bonne idée d'utiliser un logiciel de webinaire pour faciliter le processus.
16. Préparez-vous au pire scénario
Vous ne pouvez pas être trop prudent. Le Web et tout ce qui y est publié ne peuvent jamais être sécurisés à 100 %. Cependant, vous pouvez prendre des mesures qui peuvent aider à atténuer les risques.
La clé est d'évaluer les vulnérabilités potentielles et de développer une réponse appropriée aux risques avec des mesures de sécurité adéquates. De nouvelles techniques d'attaque apparaissent fréquemment, les meilleures pratiques doivent donc également évoluer dans le cadre de ce processus.
Par exemple, si un site Web WordPress est piraté, le plan d'urgence doit inclure ce qu'il faut faire en cas de piratage. Cela devrait contenir des méthodes de sauvegarde, le processus de nettoyage et les étapes nécessaires pour reconstruire le site Web et restaurer le service.
Un tel plan permettra à toutes les parties prenantes de corriger les choses rapidement sans être submergées par une surcharge d'informations ou réagir de manière excessive avec des actions inutiles.
Dernières pensées
Que pouvez-vous faire d'autre pour améliorer la sécurité de votre thème ou de votre plugin ? Eh bien, beaucoup de choses. Vous voyez, l'écriture de code sécurisé n'est pas une chose unique. Les technologies évoluent et les méthodes d'attaque évoluent avec elles.
La réalité est que vous ne pouvez pas empêcher toutes les cyberattaques ou atténuer tous les risques imaginables. Votre objectif devrait être de faire tout ce que vous pouvez avec ce que vous avez et de revoir constamment votre code pour l'améliorer.
Élaborez un plan de sécurité bien défini pour votre site Web et préparez-vous à affronter le pire. Assurez-vous de considérer les tickets ou les rapports liés à la sécurité comme la plus haute priorité.
Publiez un article de blog ou une annonce au sein de votre communauté indiquant que vous avez publié un correctif de sécurité afin que tous vos utilisateurs puissent mettre à jour et éviter que leurs sites Web ne soient compromis.
La cybersécurité n'est pas très différente d'une stratégie militaire. La clé est la préparation ! J'espère que cet article vous a aidé dans votre préparation. Faites-nous savoir dans les commentaires, quelles mesures vous prenez pour améliorer la sécurité de votre site Web.
Références utilisées dans cet article
↑ 1 | https://www.codeproject.com/Articles/11643/Exploiting-MD5-collisions-in-C |
---|