Sécurité des applications web

On ne parle maintenant plus de sites web : ils ont presque totalement disparu pour laisser la place à des applications web. On les trouve en entreprise, où on se retrouve presque à l’âge des mainframe : des applications centralisées où le poste client ne sert qu’à présenter l’information. C’est la mode, comme pour le grand public avec ce foisonnement d’applications web 2.0, blogs personnels et autres. D’aucuns diraient d’ailleurs que ces applications ont aussi leurs place en entreprise, mais c’est une autre histoire.

Les avantages des applications web sont multiples : pas de déploiement compliqué, pas de problèmes de réseau car toute l’information est transmise par HTTP, protection de la base de données qui n’est pas directement interrogeable, chiffrement possible des données en passant par SSL.

Cependant ce « nouveau » type d’applications vient avec tout un tas de nouvelles failles potentielles : injection SQL, XSS sous toutes ses formes, manipulation d’en-têtes HTTP ou de formulaires. La liste est longue et il est facile d’oublier de protéger une application.

Le blog hackers de microsoft évoque ces sujets avec une approche très intéressante au travers de cinq billets (en anglais).

  1. Part 1 qui sert d’introduction. Un billet très intéressant sur la nécessité de contrôler les entrées dans tout type d’application. Input validation, est un élément primordial dans la sécurisation d’une application : en C par exemple, le problème de buffer overflow a souvent pour origine un mauvais contrôle des données reçues. C’est la même chose pour les applications web : la plupart des failles de sécurité ont pout origine une mauvaise validation des entrées.
  2. Part 2 présente l’ensemble des données qui doivent passer au crible d’une validation avant d’être interprétées ou renvoyées à l’utilisateur. Un billet assez tourné vers le langage ASP, mais on peut facilement généraliser. Il faut ainsi contrôler : les résultats renvoyés par formulaire (GET et POST), les données reçues des cookies, les variables d’environnement du serveur (comme HTTP_REFERRER), et la signature des librairies utilisées (là ça va loin, mais c’est surtout que l’ASP permet de compiler du code, et de faire référence à des DLL).
  3. Part 3 introduit la notion de politique de validation : doit-on s’appuyer sur une liste noire ou une liste blanche pour valider les entrées de l’application ? Quelle stratégie adopter ?
  4. Part 4 nous montre des exemples de XSS, de scripts de validation souvent utilisés avec leurs faiblesses. Bref, quelles sont les erreurs à éviter lorsqu’on valide une entrée ?
  5. Part 5 qui nous présente un tableau fort pratique pour ceux qui écriront des applications web. Pour chaque type de validation d’entrée, l’auteur nous livre les «  best practicies  ».

Bref, une petite série fort intéressante très centrée sur le développement web. Cependant, tout type d’application est concerné par des problèmes de validation d’entrée, et il peut être utile de survoler les principes généraux et les manières de s’assurer de la conformité d’une donnée.

Laisser un commentaire