web-dev-qa-db-fra.com

Lequel WP fonctions avez-vous besoin d'utiliser esc_html () ou esc_url () sur?

J'ai rencontré des situations dans lesquelles des personnes ont utilisé esc_html() ou esc_url() avec certaines fonctions WP telles que home_url('/'). Un exemple dans la balise d'ancrage d'ouverture de <a> renvoie à la page d'accueil telle que celle-ci:

<a href="<?php echo esc_url( home_url( '/' ) ); ?>"> 

Comment savez-vous quelles WP fonctions doivent être évitées et est-ce important si vous utilisez esc_html() ou esc_url()?

Tout conseil ou orientation serait merveilleux.

7
The Chewy

Tout ce qui retourne des données.

  • Si une fonction est sortie en interne, alors elle prend la responsabilité de s'échapper
  • si une fonction renvoie les données à utiliser, elles ne seront pas échappées pour éviter une double fuite, c'est votre responsabilité

Cela est dû au fait que vous devez toujours vous échapper tardivement afin d'éviter tout doute sur une variable.

Si la sortie des API telles que home_url était pré-échappée, cela ne serait plus vrai. Cela introduirait également un double échappement, qui peut être utilisé pour dépasser un échappement dans certains scénarios.

Quelques notes supplémentaires:

  • ne vous dérange pas pour échapper à des chaînes statiques, il est inutile
  • n'essayez pas d'encapsuler des fonctions telles que the_permalink dans esc_url, etc., les fonctions d'échappement sont toujours des fonctions, ce ne sont pas des modificateurs/surligneurs magiques indiquant à PHP de sécuriser quelque chose.
  • Ne renvoyez pas de fragments HTML complexes dans des variables, renvoyez des données, il n'est pas nécessaire d'échapper aux données, mais échapper à un fragment HTML complexe n'est pas facile et il est généralement impossible de le faire en toute sécurité.
  • Lorsque vous utilisez des codes courts/filtres, veillez à échapper les bits que vous ajoutez/modifiez, mais laissez le reste tranquille et faites-lui confiance, il ne vous appartient pas d'échapper aux sorties générées ailleurs dans ces situations. Cela dit, ne vous fiez pas à elle comme entrée si elle est utilisée pour guider votre propre code
9
Tom J Nowell

Toute sortie de données non fiables (y compris les données de la base de données) doit être nettoyée. WordPress Codex décrit les fonctions disponibles: https://codex.wordpress.org/Data_Validation

Les renifleurs de code, suivant les normes de codage WordPress , nécessitent de nettoyer les sorties, même à partir des fonctions principales de WordPress. Vous pouvez activer un tel renifleur de code dans PhpStorm, par exemple.

Parfois, une telle exigence est excessive, mais il est préférable de suivre les normes de codage pour obtenir un code plus fiable.

3
KAGG Design