Blog ENI : Toute la veille numérique !
-25€ dès 75€ sur les livres en ligne, vidéos... avec le code FUSEE25. J'en profite !
Accès illimité 24h/24 à tous nos livres & vidéos ! 
Découvrez la Bibliothèque Numérique ENI. Cliquez ici

Les failles web

Rappels sur le Web

Le Web, encore appelé World Wide Web (WWW) mais dont l’abréviation "Web" est plus de mise actuellement, est initialement une technologie de l’Internet, l’objectif étant de diffuser des documents intégrant des médias et présentant des liens entre eux (hyperliens). Ces documents sont visualisés dans un navigateur web.

Cette technologie a beaucoup évolué. S’il y a quelques années coexistaient encore beaucoup de normes et de types de médias, actuellement le ménage a été fait par les autorités de régulation et seuls quelques langages et normes perdurent :

  • HTML5 (HyperText Markup Language), qui est un langage de description de documents. Ce langage est utilisé pour la hiérarchisation du contenu et la classification des informations dans un document.

  • CSS3 (Cascading Style Sheets), qui permet de décrire la mise en forme du document décrit en HTML5.

  • JavaScript, qui est un langage de programmation exécuté par le navigateur et qui permet de rendre plus interactif le document.

L’autorité principale établissant les normes et règles d’utilisation sur HTML5 et CSS3 est le World Wide Web Consortium ou encore W3C. Cette autorité est la référence et propose des validateurs en ligne permettant de tester le code d’un document afin de valider s’il respecte les normes :

En ce qui concerne le JavaScript, c’est un langage apparu fin 1995 écrit par Brendan Eich et publié par les sociétés SUN et Netscape. Ce langage a beaucoup évolué et a permis d’introduire de nombreuses fonctionnalités dans les navigateurs. Il est capable de modifier tous...

Composition et consultation d’un site web

1. Composition d’un site web

Un site web est un ensemble de données cohérentes et ordonnées, comprenant plusieurs types de médias (texte, image, son, vidéo...). La consultation de ces informations s’effectue par un logiciel que l’on nomme navigateur. Les données sont transmises au navigateur, à sa demande, par un serveur. Un site web met donc en jeu une relation client/serveur. Les protocoles principalement utilisés pour l’échange des informations entre ces deux ordinateurs sont HTTP (HyperText Transfer Protocol) et HTTPS (HyperText Transfer Protocol Secure). Le mot Secure signifie sécurisé, mais nous verrons que c’est loin de garantir une sécurité totale et que bien souvent il donne un faux sentiment de sécurité. Les langages les plus utilisés pour la description des pages sont le HTML et le XHTML.

2. Consultation d’une page web

Entre le moment où nous indiquons au navigateur la page web que nous voulons consulter et l’affichage de celle-ci dans son intégralité, il se passe un grand nombre d’opérations entre le navigateur et le serveur et un grand nombre d’opérations au sein du navigateur. Il existe aussi plusieurs façons d’indiquer au navigateur la page souhaitée. Généralement, ce sera un clic sur un lien trouvé dans un moteur de recherche, mais il est aussi possible d’indiquer l’URL (Uniform Resource Locator) directement dans la barre d’adresse du navigateur. Il existe d’ailleurs une confusion pour les utilisateurs non avertis entre une recherche sur un moteur de recherche et l’indication de l’URL précise. Cette confusion vient de la simplification de l’utilisation des navigateurs en ajoutant des fonctionnalités...

Les failles web

1. Définition et importances

Une faille de sécurité dans un site web est un comportement non prévu par le développeur qui peut conduire à un événement redouté. Les événements redoutés peuvent être classés par gravité en fonction de leur impact. Nous pouvons citer à titre d’exemple quelques événements :

  • Perte de confidentialité d’une information (récupération de données sur des clients ou des salariés).

  • Perte de disponibilité du service (impossibilité d’accéder au site web).

  • Perte d’intégrité des données du site (défaçage).

  • Etc.

Ici, nous avons mentionné les sites web, mais plus largement nous pouvons parler d’applications web. Il est vrai que le paysage et les technologies du Web ont beaucoup évolué ces dernières années. La puissance et les fonctionnalités des navigateurs sont devenues tellement importantes qu’un navigateur peut faire fonctionner une application qui nécessitait auparavant un développement lourd en C ou dans un autre langage. L’alternative offerte actuellement de développer ses applications pour qu’elles s’exécutent dans un navigateur web est très appréciable. Elle permet de s’affranchir de beaucoup de contraintes, comme par exemple le système d’exploitation utilisé. C’est pour cette raison que nous voyons de plus en plus d’applications fonctionner dans un navigateur (gestion RH, comptabilité, gestion de projet, etc.) et que l’importance des failles potentielles qu’elles peuvent entraîner est d’autant plus grande.

2. Exposition et architecture d’un site web

Il existe plusieurs types de sites web, de la simple...

Contre-mesures et conseils de sécurisation

1. Filtrer toutes les données

a. Constat

Nous avons constaté au cours des différentes attaques présentées que toutes les données envoyées par un client peuvent être altérées. Il est donc indispensable de filtrer l’ensemble des informations que le serveur reçoit avant d’engager toute action de celui-ci.

b. Éviter les injections SQL

Pour éviter les injections SQL, il faut, comme nous le verrons par la suite pour tous les autres traitements, filtrer les données avant qu’elles ne soient interprétées par le moteur d’exécution du serveur de bases de données. Une des meilleures pratiques est d’utiliser les requêtes préparées, ce que nous n’avons pas fait dans nos exemples lorsque nous avons traité les injections SQL. Voici ce que devient notre script identification.php en utilisant cette technique :

<!DOCTYPE html> 
<html> 
        <head lang="fr"> 
                <meta charset="UTF-8"> 
                <title>Identification</title> 
</head> 
<body> 
        <h1>Identification</h1> 
        <p>Saisissez votre identifiant et votre mot de passe :</p> 
        <!-- formulaire de saisie de l'identifiant et du mot de passe --> 
        <form method="POST" name="identif"> 
        Identifiant : <input type="text" name="identif" size="30"><br> 
        Mot de passe : <input type="password"...

Conclusion

L’objectif de ce chapitre était de faire prendre conscience des problèmes de sécurité que nous pouvons rencontrer sur le Web. Nous n’en avons donné qu’un petit aperçu. Comme nous l’avons évoqué, il existe tellement de situations, de langages, de serveurs, qu’il faudrait un livre entier pour tout aborder. Mais si, après la lecture de cette partie, vous avez à l’esprit qu’il faut filtrer tout ce qui vient du client et ne pas négliger la configuration du serveur et des composants logiciels, l’objectif est atteint.