web-dev-qa-db-fra.com

comment échapper à wp_oembed_get pour phpcs

J'utilise phpcs pour m'assurer d'écrire un code de thème agréable et valide WP, mais je rencontre le problème suivant concernant l'échappement avant la sortie.

Si j'essaie d'utiliser echo wp_oembed_get( 'https://www.youtube.com/watch?v=someidhere' );, cela fonctionne comme prévu - je reçois une belle vidéo youtube sur la page.

MAIS - phpcs jette un expected next thing to be an escaping function, not wp_oembed_get ce qui n’est pas très surprenant car vous êtes supposés échapper à tout au point de sortie.

Je ne peux pas utiliser wp_kses_post() (la vidéo ne s'affiche tout simplement pas - pas de sortie) ou toute autre fonction d'échappement.

Comment pourrais-je m'y prendre, m'assurer que je respecte les normes phpcs?

4
Tims

Notez que les les normes WPCS pour PHPCS ne sont pas "officielles". Je suis l’un des responsables, et tout ce que nous pouvons faire est de faire de notre mieux pour respecter les normes proposées par WordPress. Dans ce cas, je suis vous ne savez pas comment vous échapperiez à la sortie de wp_oembed_get(). Il est peut-être nécessaire d'échapper à la fonction car la valeur renvoyée est transmise via plusieurs filtres et peut en fait contenir du code HTML brut non validé du fournisseur oEmbed.

Si vous faites confiance au fournisseur oEmbed, aux filtres et à votre connexion réseau, une option serait de simplement ajouter à la liste blanche cette ligne de code, comme ceci:

echo wp_oembed_get( 'https://www.youtube.com/watch?v=someidhere' ); // WPCS: XSS OK.

Cependant, si l'URL est fournie par l'utilisateur ou quelque chose d'autre et que vous ne pensez pas qu'il est sûr de faire confiance au (x) fournisseur (s) possible (s) dans le contexte de votre plugin, vous voudrez peut-être jeter un coup d'œil à la valeur brute renvoyée par wp_oembed_get() et voyez comment créer une liste blanche d'éléments et d'attributs HTML à attendre, à transmettre à wp_keses().

Notez bien évidemment que les principaux développeurs de WordPress estiment que le risque lié à la découverte oEmbed n’est pas très grave. Les utilisateurs peuvent donc coller des liens dans des publications et les intégrer automatiquement. WPCS est tout simplement super-paranoïaque à propos de ces choses, et il appartient au développeur de savoir quand il sera raisonnable de suivre ses conseils avec un grain de sel. Le site wp.com VIP est l’un des partisans les plus stricts de la politique en matière de protection des données. Cependant, la documentation de son développeur révèle qu'elle semble autoriser l'utilisation de wp_oembed_get() , bien qu'elle suggère l'utilisation de son implémentation personnalisée, wpcom_vip_wp_oembed_get() , pour ajouter des fonctionnalités de mise en cache.

En fin de compte, vous ne devriez probablement pas vous inquiéter trop de vous échapper de wp_oembed_get(). Si vous soulevez le problème sur GitHub repo de WPCS , la fonction peut même être ajoutée à la liste blanche par défaut.

9
J.D.