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 的查询中,对整体性能都会有所提高。

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
WordPress新闻

WordPress 6.1 将 send_headers Action 后移到准备加载文章的后面

2022-10-20 2:55:49

WordPress新闻

WordPress 6.1 新增 WP_List_Table::get_views_links() 生成当前视图链接

2022-10-20 3:26:35

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
今日签到
有新私信 私信列表
搜索
赣ICP备2021010644号-1