gpt4 book ai didi

php - 这个 preg_replace 有什么作用? (/[\xF0-\xF7].../)

转载 作者:可可西里 更新时间:2023-11-01 06:31:30 24 4
gpt4 key购买 nike

显然 $data 是字符串,我们正在删除满足 reg 表达式的字符,但是/[\xF0-\xF7].../指定的字符是什么?

 preg_replace('/[\xF0-\xF7].../', '', $data)

还有这些字符被替换的意义是什么?

赏金编辑:具体来说,这是试图防止发生什么漏洞利用?数据稍后用于 mysql 查询(非 pdo),所以我认为这些字符可能涉及某种注入(inject)攻击?或不?我试图理解我正在阅读的脚本中这行代码背后的逻辑。

最佳答案

它从 unicode 字符串中删除 4 个字节序列。在这些中,第一个字节始终是 [\xF0-\xF7],三个点是其余 3 个字节。

根据 http://dev.mysql.com/doc/refman/5.5/en/charset-unicode-utf8mb4.html :

The character set named utf8 uses a maximum of three bytes per character and contains only BMP characters.

选择了 utf8 编码的 MySQL 可能会在序列出现的地方截断文本,如果错误报告未设置为 strict_trans_tables,它可能会静默执行,而不是像 SQLSTATE[ 那样抛出错误HY000]:一般错误:1366 不正确的字符串值:

查看这些以获取更多引用:

潜在的截断会导致漏洞利用。

例如,有一个用户名为admin 的网站。网站允许任何人注册。使用截断的字符串可能会插入另一个具有不同电子邮件的 admin 绕过唯一检查。然后暂停帐户并尝试使用恢复程序。它将发出类似 SELECT * FROM users WHERE name = 'admin' 的查询,因为原始管理员是第一个记录,攻击者将恢复他的密码。

关于php - 这个 preg_replace 有什么作用? (/[\xF0-\xF7].../),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13654443/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com