web-dev-qa-db-fra.com

Échappement intégré WP chaîne de retour de fonction

Faut-il filtrer la sortie des fonctions intégrées WP telles que get_permalink() et des plugins bien connus WP tels que ACF (Advanced Custom Fields) tels que get_field()?

Par exemple, get_permalink() appelle home_url() qui appelle get_home_url(), dont aucun ne filtre les données . De la même manière, travaillez the_content(), the_title() et le reste des fonctions habituelles liées à la boucle.

Par conséquent, les éléments suivants sont-ils suffisants? ( no esc_attr() pour WP et fonctions ACF )

<?php while ($wp_query->have_posts() && __return_true($wp_query->the_post()) ) : ?>
    <a href="<?=get_the_permalink()?>">
        <img src="<?=get_field('homepage_thumbnail')['sizes']['thumbnail']?>" />
    </a>
<?php endwhile; ?>

Ou devrais-je être plus prudent avec les données provenant du plugin? ( remarque esc_attr() ajoutée à la source de l'image ACF, troisième ligne )

<?php while ($wp_query->have_posts() && __return_true($wp_query->the_post()) ) : ?>
    <a href="<?=get_the_permalink()?>">
        <img src="<?=esc_attr(get_field('homepage_thumbnail')['sizes']['thumbnail']?>)" />
    </a>
<?php endwhile; ?>

Ou devrais-je être très prudent même avec les fonctions stock WP? ( remarque esc_attr() ajoutée à WP anchor href, deuxième ligne )

<?php while ($wp_query->have_posts() && __return_true($wp_query->the_post()) ) : ?>
    <a href="<?=esc_attr(get_the_permalink())?>">
        <img src="<?=esc_attr(get_field('homepage_thumbnail')['sizes']['thumbnail']?>)" />
    </a>
<?php endwhile; ?>
3
dotancohen

Echap est utilisé pour produire du HTML valide ou d’autres formats, et cela dépend du contexte.

Il est nécessaire d'écrire une URL dans quelque chose comme <a href="<?php echo $url?>".... afin de remplacer les caractères "&" par & (bien que les navigateurs le corrigeront probablement si vous ne le faites pas).

L'échappement d'une URL dans un élément d'entrée tel que <input value="<?php echo $url?>"... ne nécessite pas le remplacement de "&" mais nécessite le remplacement de tout caractère de citation.

Donc, en général, puisque l’échappement dépend du contexte, vous pouvez supposer que l’API wordpress ne vous échappera pas. Ce que font les plugins, dépend du plugin lui-même.

1
Mark Kaplun

Vous devriez toujours échapper à vos données, quelle que soit leur origine. Pour votre exemple, les URL doivent être échappées avec esc_url() .

WordPress a beaucoup de fonctions qui peuvent être utilisées. Il existe un article sur Validation des données sur le Codex, qui répertorie les différentes fonctions disponibles.

3
RRikesh