- 交流
2026-06-08 底层安全升级
- PDO MySQL 通用 CRUD 已增加 prepared statements 参数绑定路径,覆盖
db_find()、db_find_one()、db_read()、db_insert()、db_replace()、db_update()、db_delete()、db_count()、db_maxid() 等高频数据库入口。
- 旧
mysql 驱动继续保留原 SQL 拼接路径,避免一次性破坏兼容性;推荐生产环境使用 pdo_mysql。
- 手写 SQL 仍可通过
db_sql_find_one($sql, $params)、db_sql_find($sql, $key, $params)、db_exec($sql, $params) 逐步迁移到参数绑定。
- 已迁移主题浏览量更新、积分日志筛选/统计/每日上限等手写 SQL 到参数绑定;旧
mysql 驱动会通过安全转义回退执行。
- 已收口内部结构探测 SQL,新增表名/字段/索引安全 helper,并迁移功能表检测、后台诊断、数据库备份等
SHOW TABLES/COLUMNS/INDEX/CREATE TABLE 调用。
- 新安装默认数据库驱动已收敛为
pdo_mysql,安装流程要求 PDO MySQL;旧 mysql 驱动仍保留给历史站点兼容,并在运行时写入弃用提示日志。
- 完成全量静态回归:131 个 PHP 文件语法检查通过,已复扫手写 SQL 与旧
mysql 引用;当前 CLI 环境缺少 pdo_mysql,真实数据库流程需在启用 PDO MySQL 的运行环境继续验证。
- 修复
attach_count() 条件被二次转换的问题,附件统计现在直接使用数组条件进入 db_count()。
- 优化 Redis 缓存前缀清理,
delete_prefix() 已改用 SCAN 分批匹配并批量删除,避免 KEYS prefix* 在数据量大时阻塞 Redis。
- API 限流已从
cache_get + cache_set + kv_set 读改写改为原子计数:Redis 场景使用 INCR/EXPIRE,非 Redis 缓存场景回落到 kv 表唯一键 ON DUPLICATE KEY UPDATE v = v + 1,避免并发请求丢失计数。
- Session
cookie_test 已统一改走 xn_setcookie() 出口,复用 Secure/SameSite/HttpOnly 兼容封装,避免直接 setcookie() 绕过 Cookie 安全属性。
- 插件 hook/overwrite 编译边界已收紧:启用插件目录增加白名单与 realpath 规范化,hook/overwrite 文件必须落在插件目录内,tmp 编译产物写入前后会校验路径和内容,失败时回滚旧缓存或丢弃坏产物。
- 运行时模型合并已为生产模式动态生成
tmp/model.min.php 增加文件锁,锁内会二次校验缓存新鲜度并通过临时文件写入,避免升级或高并发请求同时生成缓存产物。
- PHP 版本基线已收敛到最低 PHP 7.4、推荐 PHP 8.1;
xiunophp.php / xiunophp.min.php 已更新 5.0.0 说明,安装检查与诊断页同步使用 PHP 7.4 门槛,并移除 magic_quotes、PHP 5/7.0 时代兼容分支。
欢迎大家加入QQ交流群:785017513
返回
二级用户组