Sécurisé comme Fort Knox : comment sécuriser un site Web contre les pirates informatiques
Publié: 2021-10-05Dans cet article, nous proposons un guide sur la façon de protéger un site Web contre le piratage et l'utilisation à des fins illégales.
La sécurité en ligne est un énorme drapeau rouge dans le ciel bleu infini d'Internet. Et bien que les mots « sécurité en ligne » puissent d'abord évoquer le harcèlement en ligne et les protections des utilisateurs, les dommages que le manque de sécurité d'un site Web peut avoir sur une entreprise sont également importants. Les propriétaires de sites Web qui réduisent leurs dépenses de sécurité paient avec leur réputation et, par conséquent, subissent des pertes financières.
Contenu:
- Pourquoi chaque propriétaire de site Web doit investir dans la sécurité
- De quelles vulnérabilités parlons-nous ?
- Défauts d'injection
- Exposition de données sensibles
- Attaques de scripts intersites (XSS)
- Authentification cassée
- Mauvaise configuration de la sécurité
- Contrôle d'accès cassé
- Désérialisation non sécurisée
- Journalisation et surveillance insuffisantes
- Entités externes XML (XXE)
- Utiliser des composants avec des vulnérabilités connues
- Comment créer un site Web sécurisé
- Combien coûte la sécurisation d'un site web ?
Pourquoi CHAQUE propriétaire de site Web doit investir dans la sécurité
Certains propriétaires de sites Web ont des pensées comme celles-ci : il n'y a rien à voler sur mon site Web. Je ne conserve aucune donnée utilisateur ni aucun détail de paiement. Je n'ai pas besoin d'une sécurité haut de gamme coûteuse.
Cependant, c'est tout simplement naïf. Il existe un certain nombre de raisons pour lesquelles votre site Web peut être piraté même s'il n'héberge aucune donnée personnelle ou financière. Voici une liste des utilisations que les pirates pourraient avoir pour à peu près n'importe quel serveur non protégé :
- Pour exiger une rançon. Même si vous ne conservez aucune donnée utilisateur sur vos serveurs, les pirates peuvent s'en emparer et vous demander de l'argent pour les récupérer.
- A utiliser comme relais SMTP (simple mail transfer protocol). SMTP est un protocole utilisé pour envoyer des e-mails en masse, par exemple des newsletters. Les pirates peuvent utiliser vos serveurs pour envoyer du spam ou des ransomwares.
- Pour extraire des Bitcoins.
- À utiliser dans les attaques DDoS dans le cadre d'un botnet.
- Pour modifier ou supprimer les données de votre site Web. Les raisons de vouloir le faire peuvent varier.
Et cela ne fait qu'effleurer la surface. Outre les menaces posées par des tiers (pirates informatiques et autres criminels), il existe également des menaces posées par d'éventuelles erreurs de la part des employés gérant votre site Web, par exemple. En fait, la sécurité intérieure est aussi importante qu'extérieure, sinon plus.
Alors, comment puis-je sécuriser mon site Web contre les pirates ? tu demandes.
Eh bien, vous devez prendre en compte et gérer un certain nombre de vulnérabilités.
De quelles vulnérabilités parlons-nous ?
L'une des entités les plus réputées de l'industrie qui se préoccupe de la cybersécurité est l'Open Web Application Security Project, OWASP en abrégé. La fondation OWASP surveille et met régulièrement à jour sa liste de problèmes de sécurité Web répandus. Voici les problèmes de sécurité courants sur leur liste (sans ordre particulier) au jour de la rédaction de cet article et quelques conseils sur la façon de réduire le danger pour votre site Web.
Défauts d'injection
Les failles d'injection concernent les bases de données et sont causées par une mauvaise validation des entrées. Lorsque votre système accepte l'entrée de l'utilisateur mais ne parvient pas à filtrer correctement cette entrée, cela rend le système vulnérable - les pirates peuvent exploiter cela pour injecter leur code dans votre système (d'où le nom). Ce code injecté peut amener votre site Web à exécuter des commandes que vous ne l'aviez pas prévu, ce qui lui permet d'afficher des données sensibles ou même de céder le contrôle du site Web au pirate.
Le type de vulnérabilité d'injection le plus répandu concerne les bases de données SQL, mais les vulnérabilités d'injection ne s'y limitent pas vraiment. Les requêtes XPath, les instructions LDAP et les scripts XML peuvent également être vulnérables à l'injection.
Comment sécuriser un site web contre les failles d'injection ? Deux des meilleures pratiques incluent l'utilisation de l'assainissement des requêtes SQL et des requêtes paramétrées. Il existe des API qui vous permettent de le faire.
Si vous ne souhaitez pas implémenter ces choses à la main, vous pouvez utiliser un outil ORM (object-relational mapping) pour votre langage de programmation préféré. Nous utilisons ActiveRecord car il est étroitement lié à l'écosystème Rails.
Aucune des options ci-dessus n'est totalement infaillible, mais elle est aussi proche que possible d'une protection solide de nos jours.
Exposition de données sensibles
Les données sensibles sont toutes les données qui peuvent être utilisées pour exploiter une personne d'une manière ou d'une autre :
- Nom
- Numéro de sécurité sociale
- Numéro de permis de conduire
- Informations de carte de crédit
- Noms d'utilisateur et mots de passe
- Date de naissance
- Information sur la santé
- Nom de jeune fille
- Noms des parents
Il peut même inclure toute information répondant à une question de sécurité, par exemple pour votre compte bancaire. Qui aurait pensé que le nom de votre premier animal de compagnie pouvait être considéré comme une donnée sensible, n'est-ce pas ?
Sécuriser les sites Web contre l'exposition de données sensibles est difficile, car cette exposition est difficile à prévoir et à détecter. Mais il existe des mesures préventives que vous pouvez prendre. Les données sensibles, si elles sont stockées sur un site Web, ne doivent jamais être stockées sous forme de texte brut ; il doit être crypté avec les dernières technologies et transmis uniquement via des canaux sécurisés.
Si votre site Web facilite des transactions ou traite généralement des données sensibles, il doit utiliser le cryptage SSL. Il s'agit de la technologie de cryptage la plus récente et la meilleure disponible. Le cryptage SSL vous aide à transférer en toute sécurité des données entre un navigateur et un serveur ou entre des serveurs. De plus, de nombreux utilisateurs rechercheront HTTPS dans l'adresse de votre site Web pour voir s'il est sécurisé. Cet en-tête est ce que vous obtenez lorsque vous obtenez un certificat SSL.
Il est également généralement recommandé de stocker les données dans le cloud. Cependant, ne présumez pas que le simple fait de les stocker dans le cloud sécurisera automatiquement les données. Toutes les mesures de protection doivent néanmoins être mises en œuvre et vous devez régulièrement surveiller et mettre à jour la sécurité.
Attaques de scripts intersites (XSS)
Les vulnérabilités XSS sont, d'une certaine manière, similaires aux failles d'injection, car elles permettent aux pirates d'affecter les pages de votre site Web en injectant du code non natif. Dans le cas de XSS, on parle d'injection JavaScript. JavaScript injecté par un pirate peut modifier le contenu de la page, insérer des liens vers des sites Web malveillants et renvoyer des données initialement cachées au pirate, ce qui entraîne une exposition de données sensibles.
Ruby on Rails et React ont une protection XSS intégrée. Une autre option pour les mesures anti-XSS et anti-injection consisterait à utiliser l'en-tête de réponse HTTP Content-Security-Policy.
Authentification cassée
Appelée à l'origine « Authentification et gestion de session interrompues », cette faille traite des vulnérabilités lors de l'authentification des utilisateurs et de la gestion de session, comme en témoigne le nom. Cela inclut l'exposition des identifiants de connexion et un certain nombre de problèmes avec les ID de session :
- Identifiants de session faibles
- ID de session affichés dans les URL
- ID de session qui ne changent pas entre les connexions
- Transmission des identifiants de session via des connexions non sécurisées
Les identifiants de session sont directement connectés à l'identité d'un utilisateur, de la même manière que les informations d'identification, et donc les intercepter peut conduire au piratage du compte d'un utilisateur. Cela entraîne toutes sortes de dommages pour vos utilisateurs, qu'ils soient financiers et de réputation ou liés à la santé.
Pour protéger votre site Web des attaques d'authentification, exigez une authentification multifacteur : par exemple, exigez un mot de passe constant et un mot de passe à usage unique délivrés à l'appareil mobile de l'utilisateur.
Google utilise une option d'authentification à deux facteurs : pour ouvrir votre compte Google dans un navigateur Web, vous devez d'abord saisir votre mot de passe. S'il est correct, vous devez également ouvrir l'application Google sur votre téléphone et choisir le numéro affiché dans le navigateur Web.
Les méthodes de protection de site Web les plus évidentes pour l'authentification interrompue incluent :
- application de la complexité du mot de passe - "Votre mot de passe doit comporter au moins 8 caractères et inclure au moins un chiffre, une lettre majuscule et une lettre minuscule."
- limiter les tentatives de connexion avant lesquelles le compte est suspendu (pour une durée déterminée ou jusqu'à ce que l'utilisateur contacte les administrateurs du site) et alerter les administrateurs
Mauvaise configuration de la sécurité
La mauvaise configuration de la sécurité est un vaste sujet, car cela peut se produire à n'importe quelle étape et avec n'importe quelle partie de votre site Web : une base de données, un réseau, un serveur, un framework, un stockage ou à peu près n'importe quoi d'autre. Les faiblesses de la configuration peuvent être exploitées pour accéder aux fonctionnalités du système. Selon l'endroit où se trouve la vulnérabilité, cet accès peut être partiel ou complet. Exemples de mauvaise configuration :

- Vous n'avez pas désactivé les comptes/mots de passe par défaut.
- Il y a des fonctionnalités inutiles et inutilisées.
- Les autorisations d'accès au cloud ne sont pas configurées de manière sécurisée.
- Vos messages d'erreur affichent des informations sensibles telles que des noms d'utilisateur, des mots de passe ou des adresses e-mail.
La première chose à faire pour éviter les erreurs de configuration est de supprimer tout ce qui n'est pas utilisé — fonctionnalités, exemples, frameworks, etc. L'étape suivante consiste à garantir la même configuration pour tous les environnements et à vérifier régulièrement ses performances. Une architecture bien pensée est indispensable.
Contrôle d'accès cassé
Le contrôle d'accès est le contrôle de ce que les utilisateurs peuvent et ne peuvent pas faire. Lorsqu'il n'est pas correctement appliqué, cela signifie que les utilisateurs peuvent effectuer des actions qui peuvent affecter votre site Web de manière imprévisible. Une façon d'exploiter le contrôle d'accès brisé consiste à afficher et à modifier les profils et les données d'autres utilisateurs. Un autre est d'accéder à des fonctionnalités premium sans les payer ni les gagner. Un autre encore consiste à accéder aux pages d'administration à partir d'un compte non administrateur (ou pire, sans compte du tout).
Le meilleur moyen de s'assurer que le contrôle d'accès de votre site Web fonctionne est le test manuel. Aucun outil de test automatisé ne peut garantir que le contrôle d'accès fonctionne comme prévu.
Un contrôle d'accès rompu peut également résulter d'un abus du mécanisme de partage des ressources d'origine croisée (CORS), qui peut fournir un accès à des API autrement restreintes. Pour cette raison, il est recommandé d'utiliser CORS le moins possible.
Désérialisation non sécurisée
La sérialisation est le processus de transformation d'un objet en un code binaire. La désérialisation est, logiquement, le contraire. Les deux sont des processus menés régulièrement dans le développement Web, ce qui rend important la mise en œuvre de protections contre leur utilisation dans les attaques.
La bonne nouvelle est que la désérialisation n'est pas quelque chose qu'un utilisateur régulier ou votre employé peut faire accidentellement . C'est aussi, en partie, la mauvaise nouvelle : les attaques de désérialisation sont toujours délibérées et, par conséquent, vicieuses. Ils entraînent également les problèmes les plus graves, tels que l'exécution de code à distance, l'entrée sur le site Web sans authentification et le lancement d'attaques DoS (déni de service).
Le moyen le plus simple de sécuriser votre site Web contre ce type d'attaque est d'interdire les objets sérialisés générés par l'utilisateur. Si cela ne peut pas être fait, la meilleure option suivante consiste à utiliser des signatures cryptographiques pour les contrôles d'intégrité.
L'utilisation de JSON, YAML ou XML peut rendre l'exploitation des faiblesses de la désérialisation plus difficile pour les pirates, car ces formats ne sont pas binaires.
Journalisation et surveillance insuffisantes
Cette vulnérabilité semble assez évidente : si vous ne surveillez pas votre site Web et n'enregistrez pas toutes les erreurs et les tentatives infructueuses de connexion ou d'exécution de la fonctionnalité de contrôle d'accès , vous tentez essentiellement les pirates informatiques d'attaquer votre site Web. Dans n'importe quel type de guerre, numérique ou réelle, la première attaque ne consiste généralement pas à gagner, mais à voir contre quoi vous êtes confronté. Et s'il y a un moyen facile d'entrer, vous l'utilisez. Si vous n'enregistrez pas et ne surveillez pas une telle enquête, votre système manquera complètement l'attaque ou la détectera une fois qu'elle a déjà eu lieu et que les dommages sont causés.
La journalisation est particulièrement importante pour les sites de commerce électronique, car ils traitent de l'argent et des informations d'identification financières des utilisateurs.
Pour rendre votre site Web plus sécurisé, enregistrez correctement toutes les tentatives infructueuses et assurez-vous que ces journaux sont stockés et sauvegardés en dehors de vos serveurs locaux. Utilisez des systèmes d'alerte automatique pour de telles défaillances et, si possible, suspendez les comptes qui génèrent continuellement de telles défaillances. Il est essentiel de disposer de systèmes d'alerte en temps réel afin de pouvoir réagir immédiatement à une éventuelle violation.
Entités externes XML (XXE)
Nous avons déjà mentionné plusieurs fois XML (Extensible Markup Language). C'est un langage flexible, ce qui le rend facile à utiliser et répandu. Les processeurs XML analysent les données des documents XML. Si votre site Web est basé sur XML et accepte les téléchargements XML sans validation, il peut être sujet à des attaques.
Pour protéger l'intégrité de votre site Web, l'ensemble d'actions suivant est recommandé :
- Désactivez le traitement DTD (définition du type de document).
- Limitez ou empêchez les téléchargements XML ou, si cela ne peut pas être fait, appliquez la liste blanche - validation d'entrée positive côté serveur.
- Mettez régulièrement à niveau vos processeurs et bibliothèques XLM.
- Empêchez la sérialisation des données sensibles.
- Le cas échéant, utilisez JSON ou des formats simples similaires.
- Implémentez des pare-feu d'applications Web (WAF) et des passerelles de sécurité API.
Utiliser des composants avec des vulnérabilités connues
Rien n'est parfait, et tout composant que vous utilisez dans votre logiciel est lié à une vulnérabilité, connue ou inconnue. En réponse aux vulnérabilités découvertes et reconnues, le logiciel est mis à jour pour couvrir ces vulnérabilités ou atténuer les dommages pouvant être causés par leur exploitation. Certaines faiblesses causent des dommages mineurs, mais d'autres peuvent être accablantes pour votre entreprise.
Pour empêcher le piratage de sites Web en raison de vulnérabilités connues, il est important de vérifier régulièrement les mises à jour et de mettre à jour tous les composants utilisés sur votre site Web. Cela peut être une tâche fastidieuse dans les logiciels et les sites Web comportant de nombreux composants. C'est pourquoi les experts en sécurité recommandent de rechercher et de supprimer régulièrement les bibliothèques, fonctionnalités, fichiers et autres composants inutiles et inutilisés. Et, bien sûr, n'utilisez que des composants provenant de sources officielles. Ne vous laissez pas séduire par les sites Web qui distribuent gratuitement des logiciels généralement payants, ils peuvent être modifiés pour pirater votre site Web.
Comment créer un site Web sécurisé : l'essentiel
Pour mettre toutes les informations techniques en termes simples, voici les conseils de sécurité à suivre si vous souhaitez créer un site Web sécurisé :
- Trouvez un hébergeur fiable.
- Mettez régulièrement à jour tous les logiciels, frameworks et bibliothèques utilisés sur votre site Web.
- Supprimez toutes les fonctionnalités et composants inutiles de votre site Web.
- Configurez des systèmes pour valider les entrées à la fois du côté du navigateur et du côté serveur.
- Surveillez les informations affichées dans les messages d'erreur.
- Configurez un vérificateur de force de mot de passe pour les utilisateurs.
- Utilisez toujours des mots de passe forts pour vos serveurs et pages d'administration, et changez-les régulièrement.
- Investissez dans un certificat SSL / utilisez le protocole HTTPS.
- Configurez une journalisation appropriée pour les échecs et les erreurs.
- Consignez les transactions d'audit (surtout si le vôtre est un site Web de commerce électronique).
- Surveillez de près les journaux.
- Utilisez des serveurs cloud, mais protégez néanmoins vos données.
- Chiffrez toujours les données sensibles à l'aide des dernières technologies.
- Demandez à votre équipe de sécurité de garder un œil sur les mises à jour de sécurité émergentes ainsi que sur les nouvelles menaces pour pouvoir réagir aux attaques en temps opportun.
Combien coûte la sécurisation d'un site web ?
C'est une question à laquelle il n'y a pas de réponse définitive. Le coût de la sécurité dépend fortement de la pile technologique utilisée par votre site. De plus, il y a le coût des mises à jour, qui dépendra du nombre de composants que vous devez mettre à jour, de la fréquence à laquelle vous les mettez à jour et du coût de mise à jour de chacun d'eux. Ces coûts doivent être calculés individuellement par vos développeurs.
Nous vous recommandons fortement de prendre en compte la sécurité dès le début du développement . Laisser la question de la sécurité jusqu'à la fin pourrait (et sera très probablement) nécessiter d'introduire des changements au cœur de votre site, ce qui peut être encore plus coûteux que de renforcer la sécurité dès le départ.
Conclusion
Si vous êtes vous-même développeur, possédez une société de développement ou avez une équipe de développement interne, vous pouvez définir toutes ces tâches avant eux. Cependant, si vous n'avez pas encore de spécialistes techniques à vos côtés et que vous souhaitez savoir comment créer un site Web sécurisé avec un prestataire d'infogérance, nous vous recommandons de trouver une société de développement qui peut non seulement créer un site Web mais le prendre en charge. Il est presque impossible de prédire chaque vulnérabilité, mais la capacité de réagir à toute violation en temps opportun peut sauver votre site Web du pire des destins.
Les développeurs de Mind Studios sont expérimentés dans les meilleures pratiques de sécurité et suivent les dernières tendances. Si vous avez des questions sur la façon de sécuriser votre site Web contre les pirates, contactez-nous pour une consultation gratuite .
Écrit par Svitlana Varaksina et Artem Chervichnik