Préparer son développement en toute sécurité

13 mai 2019

Dans le cadre d’un développement informatique, la sécurité se réfléchit à tous les stades et surtout dès la conception. Cela permet d’en simplifier l’intégration et de la rendre plus efficace. Quelles sont les premières réflexions à avoir dans un projet ?

La sécurité commence en même temps que le projet. Ne pas s’en préoccuper dès le début, c’est ne pas se donner les moyens de mettre en place une sécurité efficace. De plus, intégrer la sécurité en dernier peut se révéler complexe et engendrer un coup de développement supplémentaire. Voici quelques idées à avoir en tête dès la conception du projet.

Méthodologie de la sécurité

  • Faites une analyse d’impact (AIPD) avant de commencer à développer

En fonction de votre projet, une analyse d’impact relative à la protection des données (« AIPD ») peut être obligatoire. La CNIL dispose d’une section spéciale sur son site et elle met à disposition un logiciel gratuit consacré à ce type d’analyse.

Même si vous constatez qu’une analyse d’impact n’est pas nécessaire pour votre projet, essayez d’en mener une : elle vous aidera à réfléchir aux respects des droits des personnes et à vos mesures de sécurité.

  • Gardez la maîtrise de vos systèmes

Il est important de garder la maitrise de votre système afin d’en assurer autant le bon fonctionnement que le niveau de sécurité. Garder un système simple permet d’en comprendre exactement les rouages. Plus le fonctionnement du système est compris et plus il est facile de le sécuriser puisque les points de fragilité du système sont connus.

Cependant, les systèmes intègrent de plus en plus de fonctionnalités et tendent donc à se complexifier. Dans ce cas, il est conseillé de démarrer d’un système simple, correctement conçu et sécurisé. Ensuite, il est possible d’en augmenter la complexité petit à petit tout en continuant de sécuriser les nouveautés qui s’ajoutent.

  • Adoptez une méthodologie agile intégrant la sécurité

Si vous utilisez des méthodes agiles pour vos développements, pensez à intégrer la sécurité au cœur de votre processus.

Par exemple, si vous utilisez la méthodologie « Scrum », vous pouvez inclure des « User Stories » relatives à la protection des données de vos utilisateurs ou aux mesures de sécurité que vous souhaitez intégrer.

L’ANSSI a rendu disponible un guide « sécurité & agilité numériques » qui indique comment conduire vos développements dans le cadre d’une équipe agile tout en considérant les aspects sécurité. N’hésitez pas à le consulter.

  • Ne vous reposez pas sur une seule défense

Malgré toutes les dispositions prises pour construire un système maîtrisé, il n’est pas rare d’oublier certains composants. Pour minimiser les chances qu’il reste des failles, il est conseillé de défendre le système en profondeur. Au contraire d’une défense faite seulement en périphérie du système, une défense en profondeur vise à défendre chaque composant du système indépendamment des mesures prises pour les autres composants.

Exemple : Contrôler les données entrées dans un formulaire en ligne fait partie des défenses de périphérie. Dans le cas où cette défense est détournée, une protection des requêtes en base de données pourra prendre le relais.

  • Utilisez des normes de programmation incluant la sécurité

Souvent, des listes de normes, bonnes pratiques ou guides de codage améliorant la sécurité de vos développements sont déjà disponibles. Des outils annexes peuvent également être intégrés dans vos environnements de développement intégrés (« IDE ») afin de vérifier automatiquement que votre code respecte les différentes règles faisant partie de ces normes ou bonnes pratiques.

Ces normes et bonnes pratiques dépendent souvent du langage de programmation que vous utilisez. Vous trouverez facilement sur internet des listes de bonnes pratiques pour votre langage de programmation favori. Par exemple ici pour C, C++ ou Java.

Pour le développement d’application web, des guides de bonnes pratiques spécifiques existent, tels que ceux publiés par l’OWASP.

Choix des technologies

Avant de se lancer dans le développement à proprement parler, il reste à choisir les technologies et langages de programmation qui vont être utilisés. Voici quelques points intéressants :

  • En fonction du domaine d’application ou de la fonctionnalité développée, un langage ou une technologie peut être plus approprié qu’un autre.
  • De nombreuses vulnérabilités sont désormais connues. Elles peuvent être prises en compte pour le choix du langage de programmation ou des technologies.
  • De plus, parmi ces vulnérabilités, beaucoup sont maintenant corrigées. Pour que le code développé profite de ces solutions, il faut faire attention à utiliser les langages et technologies dans leur dernière version. Un autre exemple est d’éviter d’utiliser les fonctions d’un langage jugées obsolètes et leur préférer leur remplaçante.
  • En ce sens, les langages et technologies éprouvés sont plus sûrs. Ils ont en général eu l’occasion d’être audités pour corriger les vulnérabilités les plus connues.
  • Il faut à tout prix éviter de coder sa solution finale dans un langage tout juste appris et pas encore pratiqué. Autrement, les chances de ne pas l’utiliser correctement et de créer des failles sont augmentées du fait du manque d’expérience.

Les mots clés associés à cet article