Qual é a melhor prática para escapar de URIs de dados?

4

Normalmente, você usaria esc_url() para escapar de um URL antes de exibi-lo. Se esse 'URL' for um URI de dados (por exemplo, 'data:image/svg+xml;base64,...' ), ele será cortado em branco por esc_url() .

A página do Codex sobre validação de dados tem isto a dizer sobre URLs de escape:

  

Sempre use esc_url ao sanear URLs (em nós de texto, nós de atributos ou em qualquer outro lugar). Rejeita URLs que não possuam um dos protocolos permitidos na lista de permissões (com padrão para http, https, ftp, ftps, mailto, news, irc, gopher, nntp, feed e telnet), elimina caracteres inválidos e remove caracteres perigosos. Substitui clean_url () que foi preterido em 3.0.

Dados URIs não são cobertos por esta função e não parecem estar cobertos por nenhuma das outras funções padrão de escape do WP.

Existe uma prática recomendada no WordPress para escapar de URIs de dados?

    
por Tim Malone 08.11.2016 / 23:24

2 respostas

3

É possível passar um array com protocolos permitidos para a função esc_url () . Para URLs de dados, isso deve conter o esquema data , pois isso não está na lista de permissões de wp_allowed_protocols () como padrão.

esc_url( $data_url, array( 'data' ) );
    
por JHoffmann 08.11.2016 / 23:48
1

Um dado UR I não é exatamente um l , mas é um atributo. Use esc_attr para escapar nos atributos e esc_html em outro lugar. A chave é que escapar indica o que você está esperando. Se você está esperando uma url, use esc_url , se é um atributo use esc_attr , se é texto sem html, use esc_html , etc etc

esc_url fará o mesmo, mas com algumas regras adicionais, como impor um protocolo no início, etc.

    
por Tom J Nowell 08.11.2016 / 23:45