WordPress 6.1 的 wpdb::prepare 将转义表和字段名称,加强程序的安全性

作为 WordPress 6.1 版本的一部分,wpdb::prepare() 也更新了,它可以使用 %i 占位符转义标识符(例如表和字段名称)。

这可以确保这些值被正确转义,然后不会导致 SQL 注入漏洞。举个例子:

$table = 'my_table';
$field = 'my_field';
$value = 'my_value';
$wpdb->prepare('SELECT * FROM %i WHERE %i = %s', $table, $field, $value);
// 输出:
//   SELECT * FROM `my_table` WHERE `my_field` = 'my_value'

虽然这可以保护免受 SQL 注入攻击,但是还是应该尽可能限制用户(攻击者)从允许的可信值列表中选择,例如:

$fields = array(
'name'    => 'user_nicename',
'url'     => 'user_url',
'created' => 'DATE(created)',
);
$sql .= ' ORDER BY ' . ($fields[$order_field] ?? 'user_login');

这样的改进,还有一点点的性能方面的改进,添加对 %i 的支持会让正则表达式减少。

以后 WordPress 还将把 %i 占位符的支持放到 WP_Query 的查询中,对整体性能都会有所提高。

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容