如何以安全的方式显示发布的元数据

时间:2014-11-12 作者:vero

我有一个自定义的post元字段,可以在其中添加嵌入代码(例如,一个视频,一个iframe)。现在,我想从post meta中检索代码并安全地显示它。

我可以这样显示它:

$embed_code = get_post_meta($post->ID, \'my_embed_code\', true);
echo $embed_code;
它工作正常并显示视频。但是如果我使用esc_html 例如:

echo esc_html( $embed_code );
它不起作用。它在页面上显示代码,而不呈现代码。因此,如何以安全的方式显示上述代码。

1 个回复
SO网友:kraftner

这取决于您如何定义安全。

我假设您的嵌入代码是一个iframe,这意味着您正在将一些不受您控制的东西(理论上可能总是变成恶意的东西)放入您的站点。这本身并不是百分之百安全的。这就是为什么esc_html 把它去掉。

你必须问自己的问题是,对于有权改变这个领域的人来说,这有多大的风险。

但是如果您使用的嵌入来自a site that has oEmbed support in WordPress.

然后您可以使用wp_oembed_get. 这仍然会将其他地方的iframe放入您的站点,但至少它不允许任意HTML或JS。

如果您添加更多关于我们实际讨论的嵌入代码的信息,我甚至可以提供一个示例。

结束

相关推荐

Security and Must Use Plugins

从codex article 必须使用插件:只需将文件上载到mu插件目录即可启用,无需登录我觉得这是一个潜在的安全问题。在站点上运行插件中的任何代码之前,必须通过管理面板激活常规插件。我一直认为这是一个明智的安全预防措施,因为攻击者如果能够以某种方式将文件上载到plugins文件夹,则在运行代码之前,还必须访问和修改数据库。这个mu-plugins 文件夹似乎提供了一种简单的方法来避免这种情况。我知道WordPress开发人员比我更了解安全性,所以我想知道是否有人能解释为什么这不是一个安全漏洞。