Programmation sécurisée
Source: Wikipédia sous licence CC-BY-SA 3.0.
La liste des auteurs de cet article est disponible ici.

La programmation sécurisée consiste à prendre en compte la sécurité informatique à tous les moments de la conception, de la réalisation et de l'utilisation d'un programme informatique. Cela permet d'éviter au maximum les trous de sécurité et autres bugs.

Conception

Lors de la conception, il s'agit par exemple de concevoir le programme de façon modulaire et nécessitant le moins de droits utilisateurs possible. Il est préférable d'avoir plusieurs programmes de taille réduite voir de petite taille qui collaborent entre eux, qu'un gros programme monolithique (Un monolithe est un élément fait d'un seul bloc de pierre de grande dimension. Son nom vient du grec ancien λιθος -lire lithos-(la pierre).).

On peut par exemple opposer la conception des serveurs DNS Bind et djbdns. Bind est conçu de manière monolithique alors que djbdns est constitué de plusieurs programmes différents intéragissants entre eux.

Réalisation

Ensuite, lors de la réalisation, il faut penser à bien valider les données (Dans les technologies de l'information (TI), une donnée est une description élémentaire, souvent codée, d'une chose, d'une transaction d'affaire, d'un événement, etc.) entrées par l'utilisateur pour éviter toutes les attaques du type débordement de buffer (buffer overflow), les injections SQL, l'exploitation de mauvaises utilisations des chaînes de formatage (format string attacks), les dépassements d'entiers (integer overflow), etc. L'idée générale et la plus importante est de ne jamais faire confiance à l'utilisateur. Ne jamais faire des hypothèses sur les entrées sans les vérifier soi-même (par exemple taille de l'entrée, signe du nombre (La notion de nombre en linguistique est traitée à l’article « Nombre grammatical ».),...).

Il faut de plus réaliser le programme dans un langage approprié. En effet, certains langages sont moins sujets que d'autres aux différents bugs de formats et autres buffer overflow. De plus ces langages disposant de bibliothèques de fonctions de bases, l'utilisateur n'a donc pas besoin (Les besoins se situent au niveau de l'interaction entre l'individu et l'environnement. Il est souvent fait un classement des besoins humains en trois grandes catégories : les besoins primaires, les besoins secondaires et les...) de réécrire les siennes où il risquerait d'introduire des bugs.

Exécution

Enfin lors de l'exécution, il faut penser par exemple à appliquer les différentes mise à jour (Une mise à jour, souvent abrégé en MAJ ou MàJ, est l'action qui consiste à mettre « à jour », ou bien « à niveau », un outil...) de sécurité lorsqu'elles sortent. Pour ce faire, il peut être pratique de la part du concepteur (Un concepteur est une personne qui imagine et réalise quelque chose. Ce mot vient du verbe concevoir.) de l'application de proposer un système de mise à jour (Le jour ou la journée est l'intervalle qui sépare le lever du coucher du Soleil ; c'est la période entre deux nuits, pendant laquelle les rayons du Soleil éclairent le ciel. Son...) simplifié de l'application.

Il faut aussi faire le plus possible pour que la configuration soit facilitée et que la configuration par défaut soit la plus sécurisée possible. En effet, la plupart des utilisateurs conservent les réglages par défaut.

Page générée en 0.049 seconde(s) - site hébergé chez Amen
Ce site fait l'objet d'une déclaration à la CNIL sous le numéro de dossier 1037632
Ce site est édité par Techno-Science.net - A propos - Informations légales
Partenaire: HD-Numérique