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

modifier

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.

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 interagissants entre eux.

Réalisation

modifier

Ensuite, lors de la réalisation, il faut penser à bien valider les données entrées par l'utilisateur pour éviter toutes les attaques du type dépassement de tampon (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…).

Il faut réaliser le programme dans un langage approprié. En effet, certains langages sont moins sujets que d'autres aux différents bugs de format ou autres tels que les dépassements de pile. De plus, ces langages disposant de bibliothèques de fonctions de base, l'utilisateur n'a donc pas besoin de réécrire les siennes où il risquerait d'introduire des bugs.

Exécution

modifier

Enfin lors de l'exécution, il faut penser par exemple à appliquer les différentes mises à jour de sécurité lorsqu'elles sortent. Pour ce faire, il peut être pratique de la part du concepteur de l'application de proposer un système de mise à jour simplifié de l'application.

Il faut aussi faire en sorte que la configuration soit la plus simple possible 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.

Voir aussi

modifier

Liens externes

modifier

📚 Artikel Terkait di Wikipedia

Coccinelle (logiciel)

analyser et certifier des programmes en C, en accord avec le CERT C Secure Coding Standard et le standard MISRA (the Motor Industry Software Reliability

LDRA

Report 2008, SEI Communications, Executive Editor Richard Linger. CERT C Secure Coding Standard, The, Robert C. Seacord, 14 octobre 2008, Addison-Wesley Professional

Microsoft Power Platform

(consulté le 20 mars 2021). (en) « Announcing Microsoft Power Pages: Build secure, low-code websites », sur powerpages.microsoft.com (consulté le 2 février

Poolside AI

AI », sur societe.com « Jason Warner », sur Unusual Ventures. (en) « AI coding startup Poolside raises $500M from eBay, Nvidia, and others » , sur Tech

Liste d'abréviations en informatique

Protocol SSDT : System Service Dispatch Table (Microsoft) SSH : Secure Shell SSL : Secure socket layer SSO : Single Sign-On (« authentification unique »

Groupe Ionis

les études des nouveaux entrants. Également, on trouve[style à revoir] la Coding Academy, cursus proposé par Epitech depuis 2015 et qui forme en 20 semaines

Programmation neuro-linguistique

Dilts, Judith DeLozier, Encyclopedia of Systemic Programming and NLP New Coding, Scotts Valley, NLP University Press, 2000, 1626 p. (ISBN 0-9701540-0-3)

Cryptographie à base de codes

McEliece et H. van Tilborg, « On the inherent intractability of certain coding problems (Corresp.) », IEEE Transactions on Information Theory, vol. 24