Les bases du SI - Le protocole HTTP(S) (6/6)

Les bases du SI - Le protocole HTTP(S) (6/6)
Photo by Christina @ wocintechchat.com / Unsplash

HTTP pour Hypertext Transfer Protocol fonctionne au dessus du protocole TCP. On établit en premier lieu la connexion TCP puis la connexion HTTP.

Un message HTTP est composé comme ceci :

Headers\r\n
\r\n
Message Body\r\n

On termine donc une ligne HTTP avec \r (carriage return) et \n (new line).

HTTPS

Le HTTP ne protège pas les connexions par défaut. Cela signifie que tout ce qui transite en HTTP peut être intercepté et lu. Pour se prémunir de cela, il est possible d'y ajouter une couche de chiffrement avec HTTP Secure aussi appelé HTTP over SSL/TLS.

La cryptographie - le certificat (2/2)
Découvrez les cinq objectifs d’un certificat, sa création, son fonctionnement et son utilisation notamment avec le procédé TLS

La couche TLS permet de fournir de la confidentialité, de l'intégrité et une authentification au protocole HTTP.

En d'autres termes, avec du HTTPS, un attaquant :

  • Ne peut pas sniffer les données qui transitent
  • Ne peut pas altérer les données qui transitent
  • Ne peut pas connaître l'identité réelle du serveur, et parfois du client

Cookies

Un cookie 🍪 contient à minima les champs suivants :

  • Un domaine
  • Un chemin
  • Une expiration

Domaine

Si le domaine est spécifié, le cookie est valide sur le domaine et l'ensemble des sous-domaines.

Si le domaine n'est pas spécifié, le navigateur valide le cookie que sur le domaine actuel et pas les sous-domaines.

Path

Le cookie est valide pour le chemin spécifié et les sous-chemins :

/example/path 
/example/path/sub/path

Expire

Si il n'est pas spécifié, le cookie expire à la fin de la session HTTP.

HTTP-Only

Lorsque le flag http-only est spécifié, cela permet de préciser au navigateur que ni le javascript, ni flash, ni java ou tout autre technologie non HTML ne peut être utilisée pour lire le cookie (cela permet notamment de se prémunir des attaques XSS).

Le flag Secure créé un cookie qui ne peut être envoyé qu'à travers une connexion HTTPS.

Same Origin Policy

C'est un point de sécurité particulièrement critique pour la sécurité des applications web.

Cette politique prévient le javascript de pouvoir créer ou supprimer des propriétés en provenance d'une origine différente.

Le navigateur utilise :

  • Un protocole
  • Un hostname
  • Un port

Pour que du javascript puisse accéder à une ressource, le hostname, le port et le protocole doivent coïncider.

Un script javascript sur https://blog.adr1.fr:443/ peut accéder aux ressources :

  • https://blog.adr1.fr:443/path
  • https://blog.adr1.fr:443/path/2

Mais ne peut pas accéder aux ressources :

  • https://blog.adr1.fr:80/path
  • http://blog.adr1.fr:443/path
  • https://google.fr:443/path

A noter que le Same Origin Policy ne s'applique qu'au code javascript actuel mais il reste possible d'inclure des ressources externes comme des tags IMG, SCRIPT, IFRAME, etc.