Blog ENI : Toute la veille numérique !
💥 Un livre PAPIER acheté
= La version EN LIGNE offerte pendant 1 an !
Accès illimité 24h/24 à tous nos livres & vidéos ! 
Découvrez la Bibliothèque Numérique ENI. Cliquez ici
  1. Livres et vidéos
  2. Sécurité des applications web
  3. L'évolution du Web
Extrait - Sécurité des applications web Stratégies offensives et défensives
Extraits du livre
Sécurité des applications web Stratégies offensives et défensives
1 avis
Revenir à la page d'achat du livre

L'évolution du Web

Introduction

Dans les années 1990, le Web évolue rapidement. C’est, tout d’abord, en 1993 que le CERN met le Web dans le domaine public. Il partage également, sous licence libre, les éléments permettant à tout le monde de créer son propre serveur web : le navigateur, le serveur, ainsi que des portions de codes permettant le bon fonctionnement du système. À cette époque, le Web est un web passif proposant seulement des pages statiques.

Puis des personnes inventent de nouvelles technologies, de nouveaux langages ainsi que de nouveaux usages. Les pages deviennent dynamiques, elles adaptent leurs contenus à l’internaute. Il devient également de plus en plus facile pour un non professionnel de monter son propre serveur web et ainsi héberger ses propres pages, son propre site.

C’est également dans les années 1990 que la cybersécurité commence à prendre son essor. Le Web faisant son apparition dans les grandes entreprises, les administrations ou encore les écoles, c’est à ce moment-là qu’elles engagent leurs premiers investissements dans ce domaine. Il faut bien sûr garder à l’esprit que les problématiques de sécurité informatique sont en fait beaucoup plus anciennes, mais leurs exploitations ne reposaient pas encore sur les technologies web. À...

Les langages clients

1. Le CSS

Le CSS (Cascading Style Sheets) est un langage du Web apparu dans les années 1990 (la version actuelle est la version CSS3), qui permet de mettre en forme le contenu présent dans les pages HTML.

Le CSS a été initié par Marc Andreessen et implémenté dans le navigateur Netscape Navigator. Avant cela, le HTML possédait quelques balises de mise en forme devenues maintenant obsolètes, mais cela avait pour conséquence de mélanger le contenu du document avec les informations de mise en forme ; le CSS est né afin d’y remédier.

Les instructions CSS peuvent être présentes directement au sein des balises, grâce à l’attribut style. Dans les exemples ci-dessous, la balise <p></p>, qui représente un paragraphe en HTML, se voit doter d’un style visant à afficher le texte en couleur rouge.

<!DOCTYPE html> 
<html lang="fr"> 
  <head> 
    <meta charset="utf-8"> 
    <title>Site d'exemple</title> 
  </head> 
  <body> 
    <!-- Le texte suivant sera affiché en rouge --> 
    <p style="color:red">Bienvenue sur mon site d'exemple</p> 
  </body> 
</html> 
images/04EP02.png

Il est également possible d’écrire les déclarations CSS directement au sein de la balise HTML <head></head>, permettant ainsi de regrouper toutes les instructions CSS au même endroit. Toutefois, la différence est qu’ici toutes les balises <p></p> présentes dans la page seront affichées en rouge.

<!DOCTYPE html> 
<html lang="fr"> 
  <head> 
    <meta charset="utf-8"> 
    <style> 
      p { color: red; } 
    </style> 
    <title>Site d'exemple</title> 
  </head> 
  <body> 
    <!-- Le texte suivant sera affiché en rouge --> 
    <p>Bienvenue...

Les langages serveur

1. Le PHP

Le langage PHP (Hypertext Preprocessor) est un langage qui permet d’écrire des pages web dynamiques. Mais contrairement à JavaScript, le code PHP est exécuté cette fois côté serveur. Le code PHP, écrit généralement dans des fichiers portant l’extension .php, est interprété par le serveur, puis le résultat est retourné au navigateur.

Le langage PHP est tout d’abord un projet personnel commencé au milieu des années 1990 par Rasmus Lerdorf. À cette époque il s’agissait de petits programmes appelés CGI (Common Gateway Interface) écrits en langage C, qui lui permettaient de gérer son site personnel. Puis, le langage a évolué jusqu’à devenir le PHP d’aujourd’hui : un langage très populaire dans le Web moderne.

Il est important de saisir ici qu’étant un langage serveur, le code PHP n’est pas visible par le visiteur du site (en regardant le code source de la page). Le serveur web effectue tout d’abord une interprétation du code PHP avant d’envoyer le résultat au client (navigateur).

a. Les instructions

Afin que le serveur reconnaisse les instructions comme étant du code PHP, il est nécessaire de les entourer avec les balises PHP : <?php et ?>. De plus, une instruction doit se terminer par un caractère point-virgule (;).

<?php 
  instruction 1; 
  instruction 2; 
  instruction 3; 
?> 

Il est également possible de les regrouper dans un bloc.

<?php 
  { 
    instruction 1; 
    instruction 2; 
    instruction 3; 
  } 
?> 

b. Les commentaires

Étant donné que le langage PHP est un langage serveur, les commentaires écrits par le développeur ne seront pas visibles par les visiteurs du site, mais seulement par les personnes qui ont un accès au code source stocké sur le serveur.

<?php 
  // Un commentaire sur une seule ligne 
  /* 
    Un commentaire sur 
    plusieurs 
    lignes 
  */ 
?> 

c. Les variables...

Les cookies HTTP

1. Qu’est-ce qu’un cookie ?

Un cookie est une suite d’informations envoyée par le serveur web à un client web. Cette suite d’informations est ensuite retournée par le client au serveur lors de chaque requête. Contrairement à beaucoup d’idées reçues, les cookies ne sont pas exécutables, ne sont pas des logiciels espions ni des virus. La polémique vient surtout du tracking qu’ils permettent, souvent à des fins publicitaires.

Le cookie web (le principe de cookie existait avant pour d’autres types de communication) a été inventé par Lou Montulli en 1994 pour le navigateur Netscape. La première fois qu’un cookie web a été utilisé en conditions réelles, il permettait de déterminer si un utilisateur avait déjà visité un site ou non.

a. Côté server

Un cookie est envoyé par le serveur au client grâce à un en-tête HTTP nommé Set-Cookie. Le cookie possède plusieurs attributs dont, a minima, un nom et une valeur. Dans l’exemple suivant, le serveur définit un cookie nommé alreadyvisited et possède la valeur yes.

HTTP/1.1 200 OK 
Server: Apache/2.4.38 (Debian) 
Set-Cookie: alreadyvisited=yes 
Content-Length: 0 
Connection: close 
Content-Type: text/html; charset=UTF-8 

Les attributs

Il existe plusieurs attributs optionnels liés au cookie qui permettent de spécifier son utilisation.

Expires

Cet attribut représente la durée de vie du cookie spécifiée par une date de fin. Passé cette date, le client doit supprimer ce cookie :

HTTP/1.1 200 OK 
Server: Apache/2.4.38 (Debian) 
Set-Cookie: alreadyvisited=yes; expires=Sat, 04-Sep-2021 20:29:32 GMT 
Content-Length: 0 
Connection: close 
Content-Type: text/html; charset=UTF-8 

Max-Age

L’attribut Max-Age est semblable à l’attribut Expires à la différence qu’il exprime non pas la date de fin, mais une durée de validité (en seconde).

HTTP/1.1 200 OK 
Date: Sat, 04 Sep 2021 20:04:32 GMT 
Server: Apache/2.4.38 (Debian) 
Set-Cookie: alreadyvisited=yes; expires=Sat, Max-Age=1500 
Content-Length: 0 
Connection: close 
Content-Type: text/html; charset=UTF-8...

Les sessions HTTP

HTTP, un protocole sans état

Le protocole HTTP est un protocole dit sans état (stateless). Cela signifie que chaque couple requête/réponse est indépendant des suivants (il n’y a rien qui les lie). Cela a pour conséquence que le serveur n’est pas capable, à ce stade, de déterminer si plusieurs requêtes sont effectuées par le même utilisateur ou non. Les sessions HTTP résolvent ce problème et permettent à un serveur de suivre un utilisateur pendant son parcours sur le site web et d’enregistrer certaines informations le concernant.

Une session est référencée par un identifiant. Il s’agit généralement d’une suite alphanumérique aléatoire générée par le serveur web. Cette suite est unique, c’est-à-dire que deux utilisateurs ne peuvent pas avoir une session possédant la même valeur.

Lorsque l’utilisateur s’authentifie auprès de l’application, le serveur va générer une session HTTP et stocker l’identifiant en mémoire avant de l’envoyer au navigateur par le biais d’un cookie. En PHP, la création d’une session s’effectue de la manière suivante :

// Démarre une nouvelle session, ou reprend une session existante 
// Envoie automatiquement...