Quelle est la différence exacte entre esc_html
et attribute_escape
filtrer?
esc_html()
utilise esc_html filter
et esc_attr()
utilise attribute_escape filter
. Les deux codent <> & "'(inférieur à, supérieur à, esperluette, guillemet double, guillemet simple).
Je suis curieux de savoir ce qui les rend exactement différents en termes de sécurité (fuite).
esc_attr
qui s'échappeesc_html
ne serait pas utile, après tout pourquoi ne pas l'utiliseresc_html
partout? Si c'est évident pour vous, cela peut ne pas sembler être une bonne question, mais il n'est pas évident pour le demandeur comment ces 2 fonctions diffèrent étant donné qu'elles échappent toutes les deux aux personnages attendusRéponses:
Il semblerait que hors de la boîte, il n'y a pas de différence
La seule différence entre les 2 fonctions est le filtre appliqué à la fin. WordPress n'ajoute rien à ces filtres, donc dans une installation WP standard, ce ne sont pas des opérations. Ils sont fournis dans le cas de bord que quelqu'un pourrait en avoir besoin.
Q & R rapide
Donc par défaut, ils sont identiques?
Oui! Les fonctions
esc_attr
etesc_html
ont la même implémentationLes filtres sont-ils identiques?
La seule différence est qu'ils ont des noms différents, ils fonctionnent de la même manière, ils sont utilisés de la même manière et aucun filtre n'est utilisé dans le noyau.
Les filtres font-ils quelque chose?
Non! Tout l'échappement se fait dans la fonction quand
wp_check_invalid_utf8
et_wp_specialchars
sont appelés.Les filtres ne font pas l'échappement, ils sont l'occasion pour les plugins de faire des vérifications et des traitements supplémentaires.
Y a-t-il des cas de bord?
Seulement si vous utilisez les filtres, dites que vous êtes connecté
esc_html
mais pasattribute_escape
, ou vice versa. Pour une installation WP standard, les 2 fonctions sont identiques, sans différence.Pourquoi
attribute_escape
et nonesc_attr
?Rétrocompatibilité. Il y avait une
attribute_escape
fonction, qui est maintenant marquée comme obsolète après l'esc_
ajout des fonctions de style.Pourquoi devrais-je utiliser ces filtres?
¯\_(ツ)_/¯
ce serait une situation rare. Certaines personnes peuvent en abuser de la même manière que les API de traduction sont utilisées abusivement pour rechercher remplacer du texte. C'est déjà une mauvaise pratique car ces filtres sont souvent appelés une petite perte de vitesse est agrandie des milliers de foisMais considérez que si vous ne faites pas attention, vous pouvez compromettre la sécurité de ces fonctions en annulant l'échappement qu'elles ont ajouté ou en ajoutant du contenu non échappé à la fin. Pour cette raison, les filtres sont dangereux.
Dois-je m'inquiéter à ce sujet?
Non. Vous ne devez vous inquiéter que si vous avez utilisé ces filtres, qui en eux-mêmes auraient dû déclencher des alarmes rouges massives indiquant que quelque chose dans votre développement s'était mal passé.
Les fonctions
esc_attr
etesc_html
sont sûrs à utiliser et échappent au contenu. Vous avez une obligation éthique et morale de les utiliser si vous appréciez la sécurité de votre codeEst-ce à dire que je devrais simplement utiliser
esc_html
?Non, l'évasion consiste à définir des attentes. Si vous attendez un attribut, utilisez
esc_attr
. Ce n'est pas parce qu'il est fonctionnellement le même pour le moment que cela ne changera pas à l'avenir avec une version de sécuritéla source
esc_html
filtrerait les fuites etattribute_escape
ne filtrerait pas ou vice versa.