可湿性粉剂编码标准--逃避不可避免的挑战?

时间:2020-02-12 作者:Bonovski

你如何避开这两个例子?wc_price() 包装已转义的$product_price 在里面pspan 带有货币符号的标记。

$product_price = $product->get_price();

<p><?php echo wc_price( esc_html( $product_price ) ); ?></p>
下一个输出包含所有属性的完整图像:src, srcset, alt, 等

$product_img = $product->get_image();

<?php echo $product_img; ?>

2 个回复
最合适的回答,由SO网友:Tim Elsass 整理而成

对于第一个例子,很多人会使用wp_kses_post 处理包装函数的基本HTML输出。这是一些基本属性和标记的快捷方式,使用wp_kses. 在第二个示例中,可以使用此函数指定可以通过的允许标记和属性。

SO网友:Jacob Peattie

我的意见是你不会的。wc_price()$product->get_image() 都逃到了更远的上游。在PHPC的WordPress编码标准嗅探中,这些被称为“自动转义函数”。

通过推杆进行双重逃逸wp_kses_post() 对于已经逃逸的所有内容,仅仅为了满足代码嗅探,是对资源的浪费,实际上没有做任何事情来解决嗅探应该首先解决的问题。

PHPC之所以标记这些行(即使它们已转义),是因为WP编码标准不知道第三方功能。如果您的项目正在使用它们,或者有自己的自动转义函数,则应配置项目规则以覆盖它们。例如,将其添加到项目中phpcs.xml 文件将阻止PHPC抱怨wc_price() 无论在何处使用,都不会逃脱:

<rule ref="WordPress.Security.EscapeOutput">
    <properties>
        <property name="customAutoEscapedFunctions" type="array" value="wc_price,"/>
    </properties>
</rule>
customAutoEscapedFunctions 不支持类方法,因此要满足$product->get_image(); 您可以使用内联注释:

$product_img = $product->get_image();

echo $product_img; // phpcs:ignore WordPress.Security.EscapeOutput 

相关推荐

Need a help on sanitization

我在评论中有一个主题,我确实在像这样的少数情况下添加了“type”=>“select”部分。$wp_customize->add_setting( \'personal_lite_post_link\', array( \'default\' => \'enable\', \'sanitize_callback\' => \'personal_lite_select_callback\' ) ); $w