web-dev-qa-db-fra.com

Quelle est la meilleure pratique pour échapper à l'URI de données?

Habituellement, vous utiliseriez esc_url() pour échapper à une URL avant de l'afficher. Si cette 'URL' est un URI de données (par exemple, 'data:image/svg+xml;base64,...'), elle sera supprimée en blanc par esc_url().

La page du Codex sur la validation des données a ceci à dire sur l'échappement des URL:

Toujours utiliser esc_url lors du nettoyage des URL (dans les nœuds de texte, les nœuds d'attributs ou ailleurs). Rejette les URL qui ne possèdent pas l'un des protocoles fournis dans la liste blanche (http, https, ftp, ftps, mailto, news, irc, Gopher, nntp, feed et telnet), élimine les caractères non valides et supprime les caractères dangereux. Remplace clean_url () qui était obsolète en 3.0.

Les URI de données ne sont pas couverts par cette fonction et ne semblent pas être couverts par aucune des autres fonctions standard WP.

Existe-t-il une meilleure pratique établie dans WordPress pour échapper aux URI de données?

4
Tim Malone

Il est possible de passer un tableau avec les protocoles autorisés à la fonction esc_url () . Pour les URL de données, celle-ci doit contenir le schéma data, car il ne s'agit pas de la liste blanche de wp_allowed_protocols () () par défaut.

esc_url( $data_url, array( 'data' ) );
3
JHoffmann

Un UR de données I n'est pas tout à fait un ur l , mais il est un attribut. Utilisez esc_attr pour l’échapper dans les attributs et esc_html ailleurs. La clé étant que s'échapper indique ce à quoi vous vous attendez. Si vous attendez une URL, utilisez esc_url, si c'est un attribut, utilisez esc_attr, si c'est du texte sans HTML, utilisez esc_html, etc.

esc_url fera de même, mais avec quelques règles supplémentaires, telles que l'application d'un protocole au début, etc.

1
Tom J Nowell