WP插件审核团队要求审查代码,恳请协助排查问题原因
WordPress插件代码安全修正
我的原始代码
<li class="tab-switcher" <?php echo ($atts['font_family'] != "disabled") ? 'style="font-family: Verdana,Arial,sans-serif;"' : ''?>> <span onclick="clickTabHead(event, '<?php echo esc_js($category->slug);?>')" class="catname <?php if($count==1){echo esc_js('active');}?>" role="tab" data-toggle="tab"><?php echo esc_js($category->name);?></span> </li>
审核团队评论
注意:必须使用符合上下文的最合适函数。几乎所有要输出的内容都有对应的安全输出选项,包括安全输出HTML。
审核指出的问题代码片段:
tabbed-posts/tabbed_posts.php:64: <span onclick="clickTabHead(event, '<?php echo $category->slug;')" role="tab" data-toggle="tab"><?php echo $category->name;</span> tabbed-posts/tabbed_posts.php:83: <div id="<?php echo $category->slug;">
问题分析与修正方案
核心问题:转义函数使用不匹配上下文
WordPress安全规范要求根据输出场景选择对应转义函数,不同环境不能混用:
- HTML标签内的文本内容:用
esc_html(),比如分类名称的展示 - HTML属性值:用
esc_attr(),比如class、id这类属性的赋值 - JavaScript代码环境:用
esc_js(),比如onclick事件里传递的参数
修正后的完整代码
<li class="tab-switcher" <?php echo ($atts['font_family'] != "disabled") ? 'style="font-family: Verdana,Arial,sans-serif;"' : ''?>> <span onclick="clickTabHead(event, '<?php echo esc_js($category->slug);?>')" class="catname <?php if($count == 1){echo esc_attr('active');}?>" role="tab" data-toggle="tab"> <?php echo esc_html($category->name);?> </span> </li>
针对审核提到的第83行代码修正
原代码:
<div id="<?php echo $category->slug;">
修正后:
<div id="<?php echo esc_attr($category->slug);?>">
关键修改点说明
- 分类名称输出:将
esc_js($category->name)替换为esc_html($category->name),适配HTML文本场景的安全转义 - class属性的'active'值:将
esc_js('active')替换为esc_attr('active'),符合HTML属性值的转义规范 - div的id属性:给
$category->slug添加esc_attr()转义,避免特殊字符破坏HTML结构
内容的提问来源于stack exchange,提问作者kalyan
相关产品推荐
相关产品推荐

