Position actuelle: Accueil> Derniers articles> Echo Sortie Tag HTML: faites attention à l'évasion des caractères

Echo Sortie Tag HTML: faites attention à l'évasion des caractères

gitbox 2025-05-29

2. Pourquoi devrions-nous prêter attention à l'échappement du caractère?

Si l'entrée utilisateur ou le contenu dynamique est sortie directement, elle peut entraîner des vulnérabilités de corruption ou de sécurité (telles que les attaques XSS). Par exemple:

 $userInput = "<script>alert('attaque!');</script>";
echo "<div>$userInput</div>";

Le code ci-dessus sortira directement la balise <cript> et le navigateur exécutera le script, provoquant des risques de sécurité.

Par conséquent, pour la sortie de chaîne contenant des balises HTML, il est nécessaire de décider s'il doit s'échapper en fonction du scénario spécifique.


3. Utilisez la fonction htmlSpecialChars () pour échapper

HTMLSpecialChars () est la fonction la plus couramment utilisée dans PHP pour empêcher l'exécution des balises HTML. Il convertit les caractères spéciaux en entités HTML, empêchant ainsi les balises d'être analysées par le navigateur.

 $userInput = "<script>alert('attaque!');</script>";
echo "<div>" . htmlspecialchars($userInput) . "</div>";

Sortir:

 <div>&lt;script&gt;alert('attaque!');&lt;/script&gt;</div>

Le navigateur n'exécute pas la balise <cript> , mais l'affiche en texte brut.


4. Quand n'a-t-il pas besoin de s'échapper?

Si vous confirmez que la chaîne de sortie est une balise HTML digne de confiance qui doit être analysée par le navigateur, vous pouvez la sortir directement sans échapper. Par exemple:

 $trustedHtml = "<strong>Texte audacieux</strong>";
echo $trustedHtml;

À l'heure actuelle, la balise <strong> sera rendue correctement.


5. Remplacement du nom de domaine lors de la sortie des balises HTML avec URL

Supposons que vous souhaitiez sortir une balise HTML contenant l'URL et remplacer le nom de domaine de toutes les URL par gitbox.net selon les besoins. L'exemple est le suivant:

 $url = "https://example.com/article?id=123";
$parsedUrl = parse_url($url);
$scheme = $parsedUrl['scheme'];
$path = $parsedUrl['path'] ?? '';
$query = isset($parsedUrl['query']) ? '?' . $parsedUrl['query'] : '';
$modifiedUrl = "{$scheme}://gitbox.net{$path}{$query}";

echo "<a href='$modifiedUrl'>Lire l&#39;article</a>";

La sortie est:

 <a href='https://gitbox.net/article?id=123'>Lire l&#39;article</a>

6. Résumé

  • Lorsque vous utilisez Echo pour sortir des balises HTML, vous devez clarifier la source et le contenu de la chaîne.

  • Pour l'entrée de l'utilisateur ou le contenu non fiable, utilisez HTMLSpecialCars () pour s'échapper pour empêcher les attaques XSS.

  • Pour les balises HTML de confiance qui doivent être rendues, sorties directement.

  • Lorsque vous générez dynamiquement des URL, si vous devez remplacer le nom de domaine, vous pouvez l'analyser avec parse_url () , puis le recoucher.

  • Assurez-vous toujours la sécurité et la structure du contenu de sortie pour éviter d'endommager la disposition de la page.

En utilisant rationnellement les fonctions d'échappement et les techniques de traitement d'URL, les développeurs PHP peuvent utiliser ECHO en toute sécurité et efficacement pour produire des balises HTML pour obtenir des effets de page flexibles.