模板文件中的Echo Get_the_Term_List和Get_field是否被认为是安全的?

时间:2019-03-22 作者:movsite1

以下面的方式使用get\\u the\\u term\\u list和get\\u field是否符合公认的标准,可以安全地将分类术语显示为表中的链接,并在模板文件的标题下显示自定义字段文本?

是否建议使用更易于接受和安全的其他功能?

或者,以这种方式显示的术语或文本是否已经符合安全标准?

<table>
<tbody>
<tr><td><strong>Genre:</strong></td><td><?php echo get_the_term_list( $post->ID, \'genre\', \' \', \', \', \'\' ); ?></td></tr>
<tr><td><strong>Country:</strong></td><td><?php echo get_the_term_list( $post->ID, \'country\', \' \', \', \', \'\' ); ?></td></tr>
</tbody>
</table>
<br/>
<h3>Quote:</h3>
<span><?php echo get_field(\'quote\'); ?></span>
<br/>
<h3>Review:</h3>
<blockquote><?php echo get_field(\'review\');?></blockquote>
是什么引发了这个问题https://developer.wordpress.org/themes/theme-security/data-sanitization-escaping/ 特别是说“esc_html()–只要html元素包含正在显示的数据部分,就可以使用此函数。”

1 个回复
SO网友:tmdesigned

我昨天打了一个答案,然后把它删除了,希望有人对他们的答案更有信心。但我至少会分享我的理解。

。。。也就是说,所有放在页面中的内容都应该被清理干净,并尽可能地更新。这意味着您希望在输出时正确使用这些函数(即esc\\U html)。由于这一“尽可能晚”的原则,WordPress不会(Edit: 总是)为您预先逃生(这会增加意外双重逃生的几率)。

Edit: 根据我们在评论和进一步研究中的讨论,get\\u the\\u term\\u list是WordPress预先转义的函数之一,不需要进一步转义。由于它是通过使用过滤器挂钩进行转义的,因此有技术上更安全的方法在以后进行转义(即使用get\\u the\\u terms,然后通过适当的转义手动输出)。然而,内置的转义足够安全,核心主题依赖于它,所以它可能就足够了。

ACF也不会为您清理输出。事实上,我能从他们的开发者那里找到的唯一一条评论是一条奇怪的模棱两可的评论,大意是我们没有,也许WordPress有。

我通常没有将这些函数用于get\\u字段,因为当我不接受来自前端的输入时,危险对我来说没有直观的意义。但我也了解到,黑客和安全研究人员都比我聪明,所以我尽量遵从公认的智慧,那就是继续前进并逃跑。所以,我现在就这么做。

如果你过了头,你可能会注意到,因为数据会变得一团糟。如果你在逃逸,除非你的黑客入侵,否则你不会知道。所以犯太多的错误。

那是我的2美分。

相关推荐

Security updates to 3.3.2

我知道所有的安全更新都很重要,但从1到10的范围来看,从3.1.3升级到3.3.2有多重要。我有一些网站需要升级,但主机将我锁定在一个旧版本的php中,限制我使用3.1.3。我目前正在运行php的5.2.3版本。谢谢Bart