底层安全升级
xiaobai 17小时前

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

最新回复 (0)
全部楼主
返回
xiaobai
二级用户组
27
主题数
4
帖子数
扫码访问