Sites web & applications métierDans vos locaux ou à distance

  • Conception, hébergement, maintenance
  • Du lundi au vendredi
  • 06 81 88 95 21

Sécurité

Injection : pourquoi filtrer les données reçues ?

Mis à jour le · 3 min de lecture · NexSecure

En bref

Une injection se produit quand une donnée envoyée par un visiteur est interprétée comme une instruction par le site. Elle permet de lire ou de modifier des informations qui devraient rester hors d'atteinte. La protection repose sur trois règles : séparer le code des données par des requêtes préparées, contrôler chaque entrée côté serveur, et échapper tout ce qui est réaffiché.

Un champ de recherche, un formulaire de contact, un identifiant dans une adresse de page : chaque fois, votre site reçoit du texte venu de l'extérieur. Tant que ce texte reste une donnée, tout va bien. Le problème commence quand il est traité comme une instruction. C'est le principe de l'injection, une des failles les plus anciennes et les plus fréquentes du web.

Ce qu'est une injection, sans jargon

Imaginez une secrétaire qui recopie mot pour mot le contenu d'un formulaire dans une consigne interne. Si quelqu'un écrit dans la case « nom » une phrase formulée comme un ordre, la consigne change de sens. Un site qui assemble ses requêtes en collant bout à bout du texte reçu fait exactement cela.

Les variantes portent des noms différents selon le système visé : injection en base de données, injection de script dans la page consultée par d'autres visiteurs, injection de commande vers le système d'exploitation, ou détournement d'un champ destiné à l'envoi d'e-mails. Le mécanisme reste le même.

Pourquoi cette faille persiste

  • les contrôles sont parfois faits uniquement dans le navigateur, où ils peuvent être contournés sans difficulté ;
  • on pense aux formulaires, mais on oublie les autres entrées : adresses de pages, en-têtes de requête, données reçues d'une API partenaire, contenu importé depuis un fichier ;
  • une fonction ancienne, écrite avant l'adoption des bonnes pratiques, subsiste dans un coin de l'application ;
  • les données venant d'un autre système interne sont considérées comme sûres par principe, alors qu'elles proviennent parfois d'un formulaire public.

Les trois règles qui neutralisent l'injection

Séparer le code des données

Une requête préparée déclare d'abord la structure de l'opération, puis fournit les valeurs à part. La base de données sait alors que ces valeurs sont du texte, jamais des instructions. C'est la mesure la plus efficace, et elle est proposée par tous les langages courants.

Contrôler l'entrée côté serveur

Pour chaque champ, définissez ce qui est acceptable plutôt que ce qui est interdit : type attendu, longueur maximale, format, valeurs autorisées. Cette approche par liste d'autorisation résiste bien mieux qu'une liste de mots interdits, toujours incomplète. Le contrôle dans le navigateur reste utile pour le confort, mais il ne compte pas comme une protection.

Échapper à l'affichage

Un commentaire, un nom ou un message stocké sans danger peut redevenir dangereux au moment où il est réaffiché. L'échappement consiste à transformer les caractères spéciaux pour qu'ils s'affichent comme du texte au lieu d'être interprétés. Cette règle vaut aussi pour les contenus enregistrés il y a longtemps.

Les entrées que l'on oublie

EntréePrécaution
Fichiers envoyésVérifier le type réel, renommer le fichier, le stocker hors du répertoire public, interdire son exécution.
Adresse fournie par l'utilisateurNe pas laisser le serveur appeler une adresse arbitraire : restreindre les destinations autorisées.
Export vers un tableurNeutraliser les cellules qui commenceraient par un signe interprété comme une formule.
Données importéesAppliquer les mêmes contrôles qu'à un formulaire public, quelle que soit la source.

Comment vérifier que c'est bien fait

Demandez à votre prestataire quel mécanisme est utilisé pour les requêtes en base, où se situe la validation des entrées, et comment les contenus sont échappés à l'affichage. Une relecture de code ciblée sur ces points, ou un test d'intrusion, apporte une réponse concrète. NexSecure vérifie ces mécanismes lors d'un audit de sécurité.

Questions fréquentes

Un pare-feu applicatif suffit-il ?

Non. Il bloque des tentatives connues et fait gagner du temps, mais il filtre des apparences, pas la logique du code. Une injection écrite autrement peut passer. Le filtrage reste un complément, jamais un substitut au code correct.

Faut-il interdire certains caractères dans les formulaires ?

C'est rarement la bonne approche : cela gêne les utilisateurs dont le nom comporte une apostrophe et n'apporte pas de garantie. Mieux vaut définir un format attendu et traiter correctement les données à l'enregistrement comme à l'affichage.

Mon site utilise un logiciel du marché, suis-je concerné ?

Oui, par l'intermédiaire des extensions et du code ajouté sur mesure. Le cœur du logiciel est généralement bien protégé, mais une extension peu maintenue peut réintroduire le problème.

Comment savoir si une injection a déjà eu lieu ?

Les journaux du serveur et de la base conservent les requêtes anormales, à condition d'être activés et conservés. Sans eux, la reconstitution est très difficile, ce qui plaide pour une journalisation mise en place avant tout incident.

Sources

Service lié

Audit de sécurité

Articles liés

Rédigé par l'équipe NexSecure. Responsable de la publication : Yohann Toumine. Dernière mise à jour le 11 septembre 2026.

Une question sur votre situation ? Parler de votre projet