当前位置:首页>WordPress建站>WordPress开发>在 WordPress 6.1 中使用 wpdb::prepare() 转义表和字段名称

在 WordPress 6.1 中使用 wpdb::prepare() 转义表和字段名称

2022年11月1日更新:由于该功能可能会导致向后兼容问题,所以开发团队已经决定将该功能延迟到WordPress 6.2


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

这可确保这些值被正确转义并且不会导致 SQL 注入漏洞。

示例

$table = 'my_table';
$field = 'my_field';
$value = 'my_value';

$wpdb->prepare('SELECT * FROM %i WHERE %i = %s', $table, $field, $value);

// Output:
//   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#56091 )。

此更改将帮助开发人员使用$query参数的literal-string类型(这$query是编写为开发人员定义的字符串的地方,并且所有用户值都单独提供)。

了解更多

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

给TA打赏
共{{data.count}}人
人已打赏
欢迎关注WordPress大学公众号 WPDAXUE
WordPress开发WordPress资讯

WordPress 6.1 引入了填充、边距和块间隙的预设值

2022-10-9 10:10:50

WordPress开发WordPress资讯

WordPress 6.1 引入“Update URI”主题标头,可自定义主题更新网址

2022-10-9 10:31:27

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索