Position actuelle: Accueil> Derniers articles> [Dans la programmation PHP, comment utiliser la fonction GET_HTML_TRANSLATION_TABLE pour implémenter l'évasion correcte des entités HTML?

[Dans la programmation PHP, comment utiliser la fonction GET_HTML_TRANSLATION_TABLE pour implémenter l'évasion correcte des entités HTML?

gitbox 2025-06-11

En PHP, l'échappement des entités HTML est une exigence commune, en particulier lors de la génération de pages Web dynamiquement. Sans évasion appropriée, des problèmes de sécurité tels que des attaques XSS peuvent se produire. La fonction get_html_translation_table est un outil très utile qui peut nous aider à mettre en œuvre l'évasion correcte des entités HTML.

1. Qu'est-ce qu'une entité HTML?

Les entités HTML sont des caractères spéciaux qui commencent par & se terminent avec ; représentant certains symboles ou caractères spécifiques. Par exemple:

  • & amp; représente et symbole

  • & lt; Représente < symbole

  • & gt; Représentant > Symboles

  • Symbole "représentatif "

  • & apos; représente le ' symbole

Lorsque vous insérez des données d'entrée utilisateur dans HTML, vous devez vous assurer que ces caractères spéciaux sont correctement échappés, sinon les vulnérabilités de sécurité peuvent être déclenchées.

2. Présentation de la fonction GET_HTML_TRANSLATION_TABLE

La fonction get_html_translation_table peut renvoyer une table de mappage contenant des entités HTML et des correspondances de caractères. Nous pouvons utiliser ce tableau pour échapper aux caractères spécifiques.

Prototype de fonction:

 get_html_translation_table(int $table = HTML_ENTITIES, int $flags = ENT_COMPAT, string|null $encoding = null): array

Description du paramètre:

  • $ Table : Définit le type de table de traduction renvoyée. Les valeurs courantes sont:

    • HTML_ENTITES : Renvoie toutes les entités HTML.

    • HTML_SPECIALCHARS : Renvoie des caractères spéciaux HTML communs.

  • $ drapeaux : définit comment s'échapper. Les valeurs courantes sont:

    • ENT_COMPAT : Échappe des citations doubles, mais conserve des devis simples.

    • ENT_QUOTES : Échappez des citations doubles et simples.

    • ENT_NOQUOTES : Aucun guillemet ne s'est échappé.

  • $ Encodage : définit le codage des caractères. La valeur par défaut est NULL , en utilisant le codage des caractères de l'environnement actuel.

3. Utilisez des exemples

3.1. Obtenez le tableau de traduction des entités HTML

Tout d'abord, nous pouvons obtenir un tableau de traduction d'une entité HTML via la fonction GET_HTML_TRANSLATION_TABLE :

 <?php
$table = get_html_translation_table(HTML_ENTITIES);
print_r($table);
?>

La sortie ressemblera à:

 Array
(
    [&] => &amp;
    ["] => &quot;
    ['] => &apos;
    [<] => &lt;
    [>] => &gt;
    [ ] => &nbsp;
    ...
)

Chaque caractère de ce tableau est échappé comme l'entité HTML correspondante.

3.2. Personnages d'échappement

Supposons que nous ayons une chaîne contenant des caractères spéciaux, que nous voulons échapper à des entités HTML. Nous pouvons utiliser la fonction STRTR combinée avec get_html_translation_table pour y parvenir:

 <?php
$string = "This is a <div> tag & a \"quote\" example!";
$table = get_html_translation_table(HTML_SPECIALCHARS, ENT_QUOTES);
$escaped_string = strtr($string, $table);

echo $escaped_string;
?>

Sortir:

 This is a &lt;div&gt; tag &amp; a &quot;quote&quot; example!

Comme vous pouvez le voir, les caractères spéciaux HTML (comme < , > , " ) ont été correctement échappés.

3.3. Utilisez une URL personnalisée

Dans les applications pratiques, des évasions d'URL peuvent être nécessaires pour éviter les attaques d'injection. Si votre adresse URL contient des caractères spéciaux, vous devez leur échapper manuellement. Par exemple, nous pouvons remplacer l'URL suivante par un nom de domaine spécifique.

 <?php
$url = "http://example.com/?query=hello&name=world";
$url = str_replace("example.com", "gitbox.net", $url);
echo $url;
?>

Sortir:

 http://gitbox.net/?query=hello&name=world

De cette façon, nous remplaçons la partie du nom de domaine de l'URL d'origine par gitbox.net , assurant la sécurité de l'URL.

4. Résumé

En utilisant la fonction get_html_translation_table , combinée avec STRTR ou d'autres fonctions de traitement de chaîne PHP, nous sommes en mesure d'échapper efficacement en entités HTML pour éviter les risques de sécurité potentiels. Dans le développement réel, il est très important de s'assurer que les caractères spéciaux entrés par l'utilisateur sont correctement échappés, en particulier lors du traitement des données d'entrée en externe.

  • Étiquettes associées:

    HTML