Position actuelle: Accueil> Derniers articles> Traitement XSS avant de remplacer par htmlSpecialChars ()

Traitement XSS avant de remplacer par htmlSpecialChars ()

M66 2025-06-02

Dans le développement Web, XSS (attaque de script de site croisée) est une vulnérabilité de sécurité courante et dangereuse. En injectant le code de script malveillant, un attaquant permet aux utilisateurs d'exécuter du code conçu par l'attaquant lors de la navigation sur la page Web, volant ainsi des informations sensibles, des séances de détournement ou de la falsification du contenu de la page. Pour empêcher les attaques XSS, les développeurs doivent strictement filtrer et échapper à l'entrée utilisateur ou au contenu dynamique.

Cet article présentera comment utiliser la fonction MB_EREGI_REPLACE () dans PHP combinée avec la fonction htmlSpecialCars () pour obtenir un remplacement sûr et une sortie de l'entrée de l'utilisateur, obtenir le but de protéger les attaques XSS et d'effectuer une manipulation sûre avant l'opération de remplacement.


1. La base de l'attaque et de la protection XSS

Les attaques XSS se produisent principalement du côté du navigateur. L'attaquant intègre des scripts malveillants dans la page, ce qui conduit à une attaque après l'exécution du navigateur. La clé de la protection réside dans le filtrage et l'échappement du contenu d'entrée utilisateur.

  • Filtre : Retirez ou remplacez les balises, les propriétés et les scripts dangereux.

  • Escape : Escape les caractères HTML spéciaux en entités pour empêcher les navigateurs de les exécuter en tant que code.

La fonction HTMLSpecialCars () de PHP est une méthode courante pour empêcher les XS. Il convertit des caractères tels que <> "'et en entités HTML correspondantes, de sorte que le navigateur l'affiche en texte brut au lieu d'exécuter du code.


2. Introduction à la fonction MB_EREGI_REPLACE

MB_ERGI_REPLACE () est une fonction de remplacement régulière sûre pour les chaînes multi-octets en PHP. Il prend en charge l'appariement régulier insensible à la casse et convient au traitement des chaînes contenant des caractères multi-octets tels que le chinois.

grammaire:

 mb_eregi_replace($pattern, $replacement, $string);

Il peut être utilisé pour faire correspondre et remplacer des mots sensibles ou un contenu dangereux dans les chaînes, et est un outil puissant pour le filtrage du contenu.


3. Combiner MB_ERGI_REPLACE et HTMLSPECIALCHARS pour implémenter la protection XSS

  1. Utilisez d'abord htmlSpecialChars () pour échapper à la chaîne d'entrée <br> Cela empêche l'exécution du code HTML ou JS malveillant directement par le navigateur.

  2. Utilisez ensuite MB_ERGI_REPLACE () pour filtrer ou remplacer des mots sensibles ou des balises dangereuses <br> Par exemple, remplacez la balise <cript> par du texte sécurisé pour éviter les scripts d'attaque résiduels.

  3. Sélectionnez le contenu après un traitement sûr pour éviter toute injection.


4. Exemple de code

 <?php
// Contenu d&#39;entrée utilisateur,Peut contenir des scripts malveillants
$input = '<script>alert("XSSattaque")</script><b>Texte normal</b>';

// premier pas:S&#39;échapper d&#39;abordHTMLCaractères spéciaux,Empêcher le navigateur d&#39;exécuter des scripts
$safe_input = htmlspecialchars($input, ENT_QUOTES, 'UTF-8');

// Étape 2:Remplacez les mots ou les balises sensibles,Ici<script>Par exemple,Remplacer par“[Tags interdits]”
$pattern = '<script.*?>.*?</script>';
$replacement = '[Tags interdits]';

// utilisermb_eregi_replaceRemplacer les balises sensibles,Ignorer le cas
$filtered_input = mb_eregi_replace($pattern, $replacement, $safe_input);

// Sortir le contenu traité
echo $filtered_input;
?>

Description du code:

  • htmlSpecialChars () échappe aux symboles tels que < , > en entités pour empêcher l'exécution du script.

  • MB_ERGI_REPLACE () est utilisé pour correspondre à la balise <cript> , et ignorer le boîtier et le remplacer par du texte rapide.

  • De cette façon, même si l'entrée contient des balises de mélange de cas complexes, il peut être filtré en toute sécurité.


5. Choses à noter

  • Les expressions régulières pendant le remplacement doivent être suffisamment strictes pour empêcher le contournement.

  • Le filtrage n'est pas omnipotent, et il est plus efficace pour combiner les politiques de liste blanche et les politiques de sécurité du contenu (CSP).

  • La sortie de différents environnements (HTML, JavaScript, URL, etc.) doit être effectuée des évasions de sécurité correspondantes.

  • MB_ERGI_REPLACE () convient aux environnements multi-octets et évite le code brouillé.


6. Résumé

En échappant d'abord à la saisie de l'utilisateur à l'aide de htmlSpecialChars () , puis de remplacement d'éventuels balises de script malveillant par la fonction MB_EREGI_REPLACE () , la capacité de protection XSS des applications PHP peut être efficacement améliorée. Dans les projets réels, un tel traitement de sécurité multicouche peut réduire considérablement les risques de sécurité et protéger les données des utilisateurs et la sécurité du système.


Un exemple de nom de domaine URL impliqué dans l'exemple de code:

 $url = "https://m66.net/path/to/resource";
echo "<a href=\"$url\">Liens sûrs</a>";