如何转义phpcs的wp_oembed_get

时间:2016-10-13 作者:Tims

我正在使用PHPC来帮助确保我编写了好的、有效的WP主题代码,但遇到了以下关于输出前转义的问题。

如果我尝试使用echo wp_oembed_get( \'https://www.youtube.com/watch?v=someidhere\' ); 正如预期的那样,我在页面上看到了一段很好的youtube视频。

但是,phpcs抛出expected next thing to be an escaping function, not wp_oembed_get 这并不奇怪,因为你应该在输出点逃避一切。

我无法使用wp_kses_post() (视频根本不显示-无输出)或任何其他转义功能。

我将如何做到这一点,确保我符合phpcs标准?

1 个回复
最合适的回答,由SO网友:J.D. 整理而成

请注意WPCS standards for PHPCS 不是“官方的”。我是维护者之一,我们所能做的就是尽最大努力符合WordPress建议的标准。在这种情况下,我不确定您将如何从wp_oembed_get(). 当返回值通过多个过滤器时,函数可能确实需要转义,并且可能实际上包含来自oEmbed提供程序的原始未验证HTML。

如果您信任oEmbed提供程序、过滤器和网络连接,一种选择就是将这行代码列入白名单,如下所示:

echo wp_oembed_get( \'https://www.youtube.com/watch?v=someidhere\' ); // WPCS: XSS OK.
但是,如果URL是用户提供的或其他内容,并且您认为在插件上下文中信任可能的提供者是不安全的,那么您可能需要查看wp_oembed_get() 请参阅关于制作HTML元素和属性的白名单,以期望传递给wp_keses().

请注意,WordPress的核心开发人员显然觉得oEmbed发现的风险并不是很大,因此用户可以将链接粘贴到帖子中,并将其自动嵌入。WPC对这些事情非常偏执,开发人员应该知道什么时候可以接受它的建议。晚逃政策最严格的追随者之一是wp。com VIP。然而,查看其开发人员文档可以发现allow the use of wp_oembed_get(), 虽然它建议使用其自定义实现,wpcom_vip_wp_oembed_get(), 用于添加缓存功能。

所以最后,你可能不应该太担心逃跑wp_oembed_get(). 如果你在WPCS\'s GitHub repo, 该函数甚至可能被添加到默认白名单中。

相关推荐

Escaping SVG with KSES

我试图在模板中输出SVG文件,PHPCS告诉我需要转义输出。所以我尝试使用KSES,但它似乎不想包含viewbox属性。 $allowed_html = array( \'svg\' => array( \'xmlns\' => array (), \'viewBox\' => true ), \'path\' => array( \'d\'=> array(), ), )