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.
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.
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.
get_html_translation_table(int $table = HTML_ENTITIES, int $flags = ENT_COMPAT, string|null $encoding = null): array
$ 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.
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
(
[&] => &
["] => "
['] => '
[<] => <
[>] => >
[ ] =>
...
)
Chaque caractère de ce tableau est échappé comme l'entité HTML correspondante.
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 <div> tag & a "quote" example!
Comme vous pouvez le voir, les caractères spéciaux HTML (comme < , > , " ) ont été correctement échappés.
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.
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