传递给 WooCommerce update_meta_data 方法的值是否已完全清理?

Is values passed to WooCommerce update_meta_data method fully sanitizing?

我正在编写一个 WordPress 插件,其中有一个供用户添加注释的输入表单。我正在使用 WooCommerce update_meta_data 方法在数据库中保存笔记。

考虑这段代码:

$note = isset($_POST['order_note']) ? sanitize_text_field($_POST['order_note']) : '';
$order->update_meta_data('_order_note', wp_json_encode($note));
$order->save_meta_data();

我知道 update_post_meta 在将数据插入数据库之前会对其进行清理(SQL 注入),但是 update_meta_data 呢?

使用以上代码在数据库中插入数据是否安全?

update_meta_data

据我在 woo 上看到的 update_meta_dataSource Code,没有调用任何清理功能。

update_metadata

另一方面,如果您看一下 wordpress update_metadataDocs,会调用两个清理函数:


因此,为了回答您的问题,是的,在使用 update_meta_data.

更新元数据之前,我也会使用清理功能

为了做到这一点,sanitize_text_field 通常可以很好地完成工作,但如果您想确保您使用的是正确的清理功能,请改用 sanitize_metaDocs。这就是 wordpress 本身正在使用的。在安全方面,就我个人而言,使用 sanitize_text_field 从来没有遇到任何问题,我也没有看到其他人有任何问题。您提供给我们的代码段对我来说是安全的。