在不剥离标签的情况下将html保存到postmeta中-安全吗?

时间:2018-11-23 作者:Steveo

我有一个产品描述框,我想从描述中添加HTML作为postmeta,由于一些外部原因,我无法取消postmeta返回的代码。

只使用原始HTML更新\\u post\\u meta安全吗?

我已经调查了wp\\u kses,但这需要我给它一个允许标记的列表,我没有这个。

1 个回复
最合适的回答,由SO网友:Jacob Peattie 整理而成

HTML在数据库中是完全安全的。只要你使用update_post_meta()add_post_meta(), 而不是直接使用SQL,WordPress将确保您不受任何SQL问题的影响。

允许meta中使用HTML的真正问题是,如果您在前端输出此HTML而不转义,那么任何有权设置产品描述的用户都可以通过将脚本包含在HTML中在前端输出脚本。这些可能是恶意的。

因此,您可以做的是:

如果用户受信任(即unfiltered_html 功能),让他们保存任何喜欢的HTMLwp_kses() 是用于从文本中剥离不允许的HTML标记的函数。您是对的,您通常需要提供允许的标签的完整列表,但还有另一个功能,wp_kses_post(). 此函数使用wp_kses(), 但是WordPress提供了一个预设的标签列表,允许文章作者无需unfiltered_html (作者和贡献者)。

所以在实践中,这看起来像:

$description = $_POST[\'description\'];

if ( current_user_can( \'unfiltered_html\' ) ) {
    update_post_meta( $post_id, \'description\', $description );
} else {
    update_post_meta( $post_id, \'description\', wp_kses_post( $description ) );
}

结束

相关推荐

我用单引号来设计我的WordPress博客的Html。现在,站点每次都重定向到index.php,而不是Page.php或Single.php

实际上,我正在为我的博客构建一个自定义主题,我在HTML中使用单引号,如:<div class=\'div\'></div> 这是否会导致我重定向到索引。php??我的网站在301处正确重定向,mod\\u rewrite已启用,并响应链接但打开索引。php。这是因为我使用了单引号吗??