在用户输出中使用什么来代替wp_kses()

时间:2015-05-23 作者:Michael Khors

我需要一些帮助。

在开发主题时,我想确保没有安全问题。因此,所有动态数据都必须在呈现的上下文中正确转义。

我知道如何逃避以下情况:

如果属性中有“echo”,请使用esc_attrsanitize_html_classesc_htmlesc_html__, esc_html_e, esc_attr_e, 等等,但有两个方面我不知道该怎么办。

如果用户输出可能包含一些html标记,如“em”或“strong”,我应该使用什么转义示例:

<?php $subtitle = get_post_meta($post_id,\'subtitle\', true); ?>
<h3 class="subtitle"><?php echo $subtitle; ?></h3>
请注意,“wp\\u kses是一个昂贵的函数,因此它只应在保存数据时运行,而不应显示”证明here

我应该使用什么转义来输出CSS样式示例:

<style type="text/css"><?php echo $css; ?></style>

1 个回复
SO网友:Rarst

让我们去看看core会做什么。

在里面default-filters.php 以下是内容输出经过的过程:

add_filter( \'the_content\', \'wptexturize\'        );
add_filter( \'the_content\', \'convert_smilies\'    );
add_filter( \'the_content\', \'convert_chars\'      );
add_filter( \'the_content\', \'wpautop\'            );
add_filter( \'the_content\', \'shortcode_unautop\'  );
add_filter( \'the_content\', \'prepend_attachment\' );
这些都不是真正的专用安全/转义功能。

这与评论类似,这些评论完全来自随机访问者,甚至不是半信任的网站作者:

add_filter( \'comment_text\', \'wptexturize\'            );
add_filter( \'comment_text\', \'convert_chars\'          );
add_filter( \'comment_text\', \'make_clickable\',      9 );
add_filter( \'comment_text\', \'force_balance_tags\', 25 );
add_filter( \'comment_text\', \'convert_smilies\',    20 );
add_filter( \'comment_text\', \'wpautop\',            30 );
简而言之,它是相当值得信赖的,已经在提交和从数据库返回时被删除了。

结束

相关推荐

Contact Form Security

在Wordpress中构建我自己的联系人表单。除了典型的电子邮件etc验证和可能的验证码之外,我还需要考虑任何其他安全步骤。我没有向数据库发送任何数据。