Escapando strings de retorno da função WP embutida

4

Deve-se filtrar a saída de funções WP incorporadas, como get_permalink() e plugins WP conhecidos, como ACF (Advanced Custom Fields), como get_field() ?

Por exemplo, get_permalink() chamadas home_url() , que chama get_home_url() , nenhuma das quais faz qualquer filtragem dos dados . De forma semelhante, trabalhe the_content() , the_title() e o resto das funções relacionadas ao Loop.

Portanto, o seguinte é suficiente? ( não esc_attr() para funções WP e 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 devo ter mais cuidado com os dados provenientes do plug-in? (aviso esc_attr() adicionado à fonte de imagem ACF, terceira linha )

<?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 eu deveria ser super cuidadoso, mesmo com o estoque de funções WP? ( aviso esc_attr() adicionado ao WP anchor href, segunda linha )

<?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; ?>
    
por dotancohen 27.01.2016 / 10:48

2 respostas

1

Escapando é usado para produzir HTML válido ou outros formatos, e isso depende do contexto.

Escapar de um URL em algo como <a href="<?php echo $url?>".... é necessário para substituir qualquer "&" caracteres com & (embora os navegadores provavelmente consertem isso para você, se você não fizer isso).

Escapar de um URL em um elemento de entrada como <input value="<?php echo $url?>"... não requer a substituição de "&" mas requer a substituição de qualquer caractere de aspas.

Então, em geral, como o escape é sensível ao contexto, você pode assumir que a API do wordpress não irá escapar para você. O que os plugins fazem depende do plugin em si.

    
por Mark Kaplun 27.01.2016 / 13:40
3

Você deve sempre escapar de seus dados, seja qual for sua origem. Para o seu exemplo, os URLs devem ser ignorados usando esc_url() .

O WordPress tem muitas funções que podem ser usadas. Há um artigo sobre Validação de dados no Codex, que lista as várias funções disponíveis.

    
por RRikesh 27.01.2016 / 11:55