🛡️web

Securite web : comprendre HTTPS, XSS et injection SQL

30 mars 2026 5 min de lecture

Introduction : Pourquoi la sécurité web est-elle cruciale ?

Imagine que tu envoies un message secret à un ami. Tu ne voudrais pas qu'un inconnu l'intercepte et le lise, n'est-ce pas ? C'est exactement ce qui se passe sur Internet avec tes données personnelles, tes mots de passe ou tes informations bancaires. En NSI, comprendre la sécurité web n'est pas qu'une option, c'est une nécessité pour tout développeur. Dans cet article, on va démystifier trois piliers fondamentaux : HTTPS, qui protège la communication, et deux attaques majeures, le XSS et l'injection SQL. Prêt à devenir un gardien du web ? C'est parti !

HTTPS : Le garde du corps de tes données

Tu as sûrement déjà remarqué ce petit cadenas à côté de l'URL de ton site préféré. C'est le signe que tu es sur une connexion HTTPS (HyperText Transfer Protocol Secure). Mais que se cache-t-il derrière ce "S" magique ?

Comment HTTPS fonctionne-t-il ?

HTTPS utilise un protocole appelé TLS (Transport Layer Security) pour chiffrer les données échangées entre ton navigateur et le serveur web. Voici le processus simplifié :

  • Étape 1 : La poignée de main (handshake) – Ton navigateur et le serveur se saluent et s'identifient à l'aide d'un certificat numérique, une sorte de carte d'identité électronique délivrée par une autorité de confiance.
  • Étape 2 : L'échange des clés – Ils échangent des clés cryptographiques pour établir une connexion sécurisée. C'est comme s'échanger un code secret unique pour la conversation.
  • Étape 3 : Le chiffrement – Toutes les données (identifiants, messages, etc.) sont ensuite brouillées. Même si quelqu'un les intercepte, il ne verra qu'un charabia incompréhensible.

En NSI, tu apprendras que sans HTTPS, tes données voyagent en clair, comme une carte postale que n'importe qui pourrait lire. HTTPS transforme cette carte postale en une lettre scellée dans un coffre-fort.

XSS (Cross-Site Scripting) : Quand le site se retourne contre toi

Le Cross-Site Scripting (XSS) est une faille qui permet à un pirate d'injecter du code malveillant (souvent du JavaScript) dans une page web vue par d'autres utilisateurs. Le but ? Voler des sessions, rediriger vers des sites frauduleux ou carrément prendre le contrôle de ton compte.

Les deux types principaux de XSS

  • XSS Réfléchi (Reflected) : Le code malveillant est inclus dans une URL. Quand tu cliques sur le lien piégé, le script s'exécute dans ton navigateur. C'est souvent utilisé dans les arnaques par phishing.
  • XSS Stocké (Stored) : Plus dangereux ! Le script est enregistré sur le serveur du site (dans un commentaire, un profil utilisateur...). Tous les visiteurs qui consultent la page infectée exécutent le code sans le savoir.

Imagine un forum où tu pourrais poster un commentaire contenant <script>alert('Pirate !')</script>. Si le site ne filtre pas ce code, tous les visiteurs verraient une pop-up. Maintenant, remplace cette pop-up par un script qui vole les cookies de session... tu vois le danger ?

Comment s'en protécher ?

La règle d'or pour les développeurs est : ne jamais faire confiance aux données entrantes de l'utilisateur. Il faut toujours les "assainir" (sanitize).

  • Échappement (Escaping) : Convertir les caractères spéciaux (<, >, &, ") en leurs équivalents HTML (&lt;, &gt;, etc.) pour qu'ils soient affichés comme du texte et non interprétés comme du code.
  • Validation des entrées : Vérifier le format et le type des données reçues (un email doit contenir un @, un âge doit être un nombre, etc.).
  • Utiliser des frameworks modernes : Des bibliothèques comme React ou Vue.js échappent automatiquement les données par défaut, ce qui constitue une première barrière solide.

Injection SQL : Le pirate qui parle à la base de données

L'injection SQL est l'une des attaques les plus anciennes et les plus dévastatrices. Elle vise les bases de données. SQL (Structured Query Language) est le langage utilisé pour communiquer avec elles (pour rechercher, ajouter ou modifier des données).

Le principe de l'attaque

Un site vulnérable construit ses requêtes SQL en concaténant directement les saisies de l'utilisateur. Prenons un formulaire de connexion classique. Le code côté serveur pourrait ressembler à ça :
requete = "SELECT * FROM users WHERE login='" + saisie_login + "' AND password='" + saisie_mdp + "'"
Si tu saisis normalement "paul" et "monpass", la requête est normale. Mais un pirate pourrait saisir dans le champ login : ' OR '1'='1. La requête deviendrait alors :
SELECT * FROM users WHERE login='' OR '1'='1' AND password='...'
La condition '1'='1' étant toujours vraie, le pirate pourrait obtenir la liste de tous les utilisateurs et potentiellement se connecter sans mot de passe !

La parade absolue : les requêtes préparées

La solution est simple et efficace : il faut séparer la structure de la requête (le code SQL) des données (les valeurs fournies par l'utilisateur). C'est le rôle des requêtes préparées (prepared statements).
Au lieu de construire une chaîne de caractères, on écrit :
requete = "SELECT * FROM users WHERE login = ? AND password = ?"
Puis on "envoie" les valeurs saisie_login et saisie_mdp séparément. La base de données comprend alors que ces valeurs sont des données et non du code à exécuter, même si elles contiennent des apostrophes ou des points-virgules. C'est la pratique incontournable que tu devras toujours appliquer en NSI et dans tes projets.

Conclusion : De l'élève NSI au développeur vigilant

Comprendre HTTPS, XSS et l'injection SQL, c'est acquérir une vision à 360° de la sécurité web. D'un côté, HTTPS protège le canal de communication. De l'autre, se prémunir contre le XSS et l'injection SQL permet de sécuriser ton application elle-même. Ces notions ne sont pas que théoriques ; elles sont au cœur des bonnes pratiques de développement. Dans tes futurs projets en Python (avec Flask ou Django par exemple), tu auras les outils pour implémenter ces protections. Souviens-toi : un bon développeur ne se contente pas de faire fonctionner son code, il le rend aussi robuste et sûr. La sécurité, c'est une feature, pas une option !

📚 Pour aller plus loin

Questions fréquentes

Est-ce que HTTPS empêche complètement le piratage d'un site ?

Non, HTTPS ne protège que la communication entre le navigateur et le serveur (confidentialité et intégrité). Il n'empêche pas les attaques comme le XSS ou l'injection SQL qui exploitent des failles dans le code de l'application web elle-même. Il faut une combinaison de protections.

En NSI, comment je peux tester mes connaissances sur ces failles de sécurité ?

Tu peux utiliser des plateformes d'apprentissage comme "Root Me" ou "TryHackMe" qui proposent des challenges (CTF) adaptés aux débutants, avec des machines virtuelles sécurisées pour t'entraîner à trouver et exploiter (de manière éthique !) des failles XSS ou SQL. Tu peux aussi créer toi-même une petite application vulnérable en Python/Flask pour comprendre les mécanismes.

Les frameworks modernes comme React nous protègent-ils automatiquement de toutes ces attaques ?

Ils aident beaucoup, mais ne sont pas une solution magique. React échappe automatiquement le contenu affiché, ce qui protège contre la plupart des XSS. Cependant, il faut rester vigilant avec des attributs comme `dangerouslySetInnerHTML`. Pour l'injection SQL, c'est le code côté serveur (ton API en Python, Node.js, etc.) qui est responsable. Utiliser un ORM (Object-Relational Mapping) comme SQLAlchemy en Python encourage l'utilisation de requêtes préparées, mais il faut toujours suivre les bonnes pratiques.

Bravo ! Tu as lu cet article
Inscris-toi pour sauvegarder ta progression et gagner des XP
Creer mon compte
securite web NSIHTTPS XSS
Pixel