XF 2.3.12 中的一些变更包括:
合并类扩展,适用于注册仓库类,同时以其剥离别名和后缀名称注册
通过不受信任的 HTTP 阅读器路由 RSS 订阅源获取
修复 xf:file-clean-up 删除被排除的文件(例如 hashes.json)
当前需求
请注意,XenForo 2.3的系统需求比早期版本更高。
以下是最低要求:
PHP 7.2或更高(推荐PHP 8.3)
MySQL 5.7及更新版本(也兼容MariaDB/Percona等)
所有官方插件都需要XenForo 2.3。
增强搜索至少需要 Elasticsearch 7.2。
XF 2.3.11 的一些变更包括:
修复了当 cron 作业本身遇到致命错误时,cron 作业运行器会被删除的问题。
当没有可用的请求 IP 时,跳过版主日志 IP 捕获,从而避免 CLI 触发的版主操作因“无效字符串 IP”而崩溃。
使 parse_less_color() 函数在遇到空字符串时返回 null 而不是 #000000,恢复了 2.2 版本的行为,以便调用者在未配置颜色时可以省略 meta 标签。
当 style 属性为空时,跳过生成 theme-color meta 标签,以便管理员可以选择不执行此操作,并让浏览器使用其默认值。
在计算可嵌套元素的放置位置时使用视口相对坐标,以便可以将项目放置在列表的第一个元素之前。
在构建 Symfony SMTP 传输时,从服务器主机名设置 EHLO 本地域,以便严格的邮件中继不再拒绝标识为 [127.0.0.1] 的邮件。
添加一个非开发模式的 xf-rebuild:icon-usage CLI 命令,以便管理员可以在开发模式之外重建 Font Awesome 图标使用情况,与 admincp 工具的功能保持一致。
将应用程序中缺失配置的处理重构为一个覆盖点,并在仅存在旧版配置时允许 CLI 应用程序继续运行并发出警告,从而确保在网站升级过程中,list、help 和 upgrade 命令仍然可用。
在删除用户帐户时,删除 xf_api_login_token、xf_oauth_token、xf_oauth_request 以及关联的 xf_oauth_refresh_token 行,以避免用户离职后遗留废弃的访问令牌和 OAuth 授权记录。
识别其他无效邮箱退信短语(例如“No such local user”、“Invalid Recipient”、“RecipientNotFound”和“recipient not unknown”),并将“recipientNotFound”规则重写为正则表达式,以便捕获不包含空格的变体,确保将这些 550 响应视为硬退信。
使用规范条目 URL 作为主题和精选内容 RSS 源的 GUID,这样 GUID 就成为全局唯一的永久链接,而不是可能与其他源冲突的纯数字 ID。
当设置了 `noCookieConsent` 选项时,在 HTML BB 代码渲染器中隐藏第三方 Cookie 同意表单;同时,为主题 RSS 源启用该选项,以便嵌入式媒体在渲染时无需显示交互式同意界面,因为该界面在 RSS 阅读器中并不适用。
当用户 API 管理员保存操作接受 `secondary_group_ids` 时,合并 `xf_user_group_change` 中仍然列出的所有组,以避免 API 使用者在往返访问二级组列表时,将版主晋升、自动晋升和用户升级组从重建的用户组缓存中静默删除。
批量执行 xf_search 删除操作,每次删除 1000 条记录,以避免 Galera 写入集大小限制
在 prepareMessageData() 中构建搜索数据时保护空用户
从 Spotify iframe 嵌入中移除已弃用的 allowtransparency="false"
打开“插入代码”对话框时捕获完整的多行选择
修复编辑器粘贴规范化中无效的子组合器选择器和 createElement 调用
为代码事件监听器向 DeleteCleanUpService 添加公共 getter
优雅地处理启用推送通知时 VAPID 密钥生成失败的问题
修复 QuoteClick 滚动位置使用绝对偏移量而非视口相对偏移量的问题
在封闭表单外部插入编辑器预览框,以防止嵌套表单提交冲突
在 getClassForAlias() 中锚定可别名命名空间检查,以防止误报
从 FocusTrigger 中移除 scrollIntoView,以防止在聚焦状态文本区域时页面跳转
避免模板编辑/历史记录页面加载完整的历史记录关系
修复 HScroller.step() 缺少 RTL 方向的问题反转
停止在 Android 和 iOS 上调用 navigator.share() 时在 URL 前添加标题和文本
规范化 FileCleanUpRepository 中的路径分隔符,以兼容 Windows
在粘贴时移除 sup/sub/ins/del/code 元素时保留内部 HTML
修复按小时限制的 cron 任务在错误的分钟偏移量下调度的问题
将警报修剪查询限制为每次 cron 运行 1000 行,以避免内存使用无限制
在 NewProfilePosts 小部件中预先加载 PermissionCombination,以消除 N+1 权限查询
从 cleanedHash 中移除前导 #,以便 getElementById 解析目标
在每周统计标签中使用 ISO 年份标记
仅当解析的类存在时,才从 getClassForAlias/getAliasForClass 返回重命名的类
在发送之前 ping 空闲的 SMTP keep-alive 连接,以避免 451 超时错误
以下为最低要求:
PHP 7.2 或更高版本(推荐使用 PHP 8.3)
MySQL 5.7 或更高版本(也兼容 MariaDB/Percona 等)
所有官方插件均需要 XenForo 2.3。
增强搜索功能至少需要 Elasticsearch 7.2。
- 确保“查看旧结果”链接出现在搜索结果的最后一页
- 确保“无此类收件人”的退信回复被归类为硬退信
- 确保“账户关闭”的退回应被归类为硬退票
- 确保“收件人未找到”的退信回复被归类为硬退信
- 确保“邮箱被禁用”的退信回复归类为硬退信
- 确保“未配置接收”的退回应被归类为硬退弹
- 当IP地址包含空字节时,防止inet_pton() ValueError
- 在DKIM签名后,使用原始邮件对象进行错误日志,以防止方法未定义错误
- 在自定义字段多选验证时跳过数组值,以防止数组转换为字符串的警告
- 规范化劝阻延迟的最小值/最大值以防止mt_rand() ValueError。
- 在DKIM验证时抑制dns_get_record()警告,以防止DNS失败时作业崩溃
- 防止向被封禁用户发送警报
- 正确撤销OAuth2令牌,以正确使访问权和刷新令牌失效
- 在Finder中尊重多列排序的方向参数
- 当WebAuthn注册或认证中止时,重新启用通行密钥按钮
- 将缺失的bookmark_id索引添加到xf_bookmark_label_use表中
- 防止在 GenerateFinder 的 CLI 命令中重复运行时积累空白
- 避免在getFinder中使用基于异常的流量控制以进行实体类解析
- 为子进程设置显式工作目录,以防止在CWD无法访问时失败
- 当自定义字段类型变更且保留值时,防止类型错误
- 在Stripe产品中包含可购买身份证,并生成计划ID
在编辑帖子后不会进行往返[*]在各种子内容实体上实现 ContainableInterface 和 DatableInterface [*]生成路由时创建模板,使用 xf-make:route
被识别出的问题如下:
如果您是 XenForo Cloud 用户,这些问题的修复已自动上线,无需进一步处理。
- 防止与 BB 代码渲染相关的可能存储 XSS(跨站脚本)漏洞利用(感谢 Antisocial)
- 防止帖子中可能的 XSS 利用与 Lightbox 使用相关的漏洞(感谢 UwU)
- 防止通过认证但恶意的管理员用户可能的远程代码执行(RCE)漏洞利用(感谢 UwU)
我们建议进行全面升级以解决此问题,但补丁可以手动应用。详情见下文。
上传补丁文件
如果您是 XenForo Cloud 用户,您的安装已经被打了补丁,无需进一步作。你将一直使用2.3.8版本,直到2.3.10版本发布。
- 下载 239-patch.zip
- 提取.zip文件
- 把上传目录的内容上传到你XenForo安装的根目录
- 重建主数据时,可以登录你的安装URL,或者在命令行运行xf:rebuild-master-data。
以下公开模板已发生变更:
必要时,应使用“过时模板”页面中的合并系统来整合这些变更。
- attachment_macros
- bb_code_tag_attach
- lightbox_macros
以下是最低要求:
- PHP 7.2或更高(推荐PHP 8.3)
- MySQL 5.7及更新版本(也兼容MariaDB/Percona等)
- 所有官方插件都需要XenForo 2.3。
- 增强搜索至少需要 Elasticsearch 7.2。
XF 2.3.8 中的一些更改包括:
- 修复一个问题,即当客户端已经调整后,EXIF 方向会被设置
- 修复实体类型提示的一些问题
- 允许在只读方法名称中下划字边界
- Fix 空用户授权应用列表容器
- 确保在生成活动摘要邮件之间,语言状态始终恢复
- 修正滤波器 JS 查询参数的串接
- 允许在本地主机上创建通行密钥
- 修复 cleanUpInvalidRecords 类型提示
- 对于非变量值,模板函数总是强制parse_less_color十六进制
- 修复重复的结果集水合查询
- 当搜索关键词长度过长时,提前返回错误
- 处理搜索输入时使用严格的类型检查
- 只需在个人资料发布标签页中搜索并展示帖子
- 使用帖子内容过滤器和帖子类型子过滤器搜索成员帖子
- 避免将SVG转换为光栅化图像
- 在 XF\Cli\Command\AbstractCommand::initialize 中跳过 void 方法 return
- 确保在查看监视线程列表时正确处理无效页码
- 在恢复作业时添加对空状态消息值的处理
- 确保在关联用户被删除时,通行密钥也随之删除
- 修复部分webhook动作缺失的支持
- 在report_view模板中添加缺失的默认名 xf:avatar 和 xf:username 标签
- 支持activity_summary邮件模板中summary_of_what_you_missed_recently短语的HTML
- 修复DKIM签名导致邮件中无法添加列表退订头的问题
- 在允许添加或修改通行密钥前,要求重新认证
- 在重建支持内容类型的元数据时,支持重建展开
- 如果启用了privacy.resistFingerprint,解决无法通过二维码在Firefox上设置TOTP
- 向 EmbedResolver/AbstractHandler 添加缺失的模板注释
- 更新 \XF\Repository\UserAlertRepository::fastDeleteAlertsForContent 上的 docblock 提示,以包含整数组
- 在强制安装大量插件ID时,提升插件管理器的性能
- 在检查已读服务器的复制状态时,确保查询正确发送到已读连接
- 渲染复选框时支持“listitemclass”属性
- 当出现意外的时间同步问题时,尽量保留后期排序
- 在直接附件URL上加入缓存清除器
- 修复无法在指定报告中显示保存按钮的“处理举报”按钮的问题
- 跳过在登出时删除样式变体偏好cookie
- 如果尝试用无效类型的重建搜索索引,会抛出错误
- 缓存在线用户数量,以减少查询使用量
- 确保在调用Entity::_saveCleanUp时_cascadeSave已清除
- 防止 Request::getIp 在某些情况下不返回有效 IP。
- 请勿解析无附加权限的访客的附件封面图片
- 通过条件对象criteria_template_data事件监听者
- 从控制面板删除时跳过不存在的附件
- 搜索完成后建立搜索实体
- 将 JSDoc 添加到 XF.createElement 中
- 修复一些引用插件的问题
- 纠正一些残留链接 twitter.com
- 当没有联系人用户字段时,从控制面板用户编辑页面隐藏额外的联系人标题
- 从数字输入中移除模式属性
- 修复XF 2.3中的DKIM登录问题
- 修复链接到Cookie时缺少尾部斜杠的问题,请从隐私政策中解释
- 使用苹果登录可能无法返回邮件的变通问题(#1199)
- 使用通行密钥时验证签名计数器(#1198)
- 当当前主机和板块URL在创建或使用通行密钥认证时不匹配,请投出更明确的错误(#1200)
- 通过管理面板(#1201)使用通行密钥认证时,登录公开论坛。
- 禁止向永久移除的Chrome订阅发送推送通知
- 确保失败的通行密钥登录计入失败登录次数限制(#1207)
- 处理 Gmail 非活跃收件箱退信作为硬退信(#1208)
- 让覆盖PayPalRest套餐参数变得更容易(#1209)
- 使用通行密钥(#1210)登录时设置tfa_trust cookie
- 如果在生成查找器类时没有 Finder 目录(#1211),请创建 Finder 目录
- 更新 PHPDoc 以获得 asVisitor 函数以更好地推断返回类型
- 减少提交帖子时的通知排队延迟
- 重构删除清理过程以确保重命名和删除在同一进程中完成
- 使用图片代理时,不要缓存本地 URL。
- 保存书签标签时可能的竞赛条件的解决方法
- 支持使用通行密钥替代密码确认
- 支持在用户注册服务中传递额外的垃圾邮件检查数据
- 添加基础的webhook标准类
- 支持在通知器类中访问通知数据
- 向模板器添加额外的数组函数
- 在从RSS订阅(#1214)导入时,使用描述作为标题时去除HTML标签
- 将 XF\BbCodeRenderer\Html::getValidUrl 功能迁移到 utility 函数(#1215)
- 如果尝试运行不存在的导入步骤(#1216),请投出错误。
- 包含带有DKIM选择器的随机字符串(#1217)
- 创建插件时检查大小写不匹配(#1218)
- 在提交非数组 JSON 输入时修复类型错误(#1223)
- 如果EXIF处理失败,不要阻止图片上传(#1224)
- 修复了 XF.phrase 函数无法处理重复替换的问题
- 修正签名显示设置为虚假值
- 修复收到的页面反应页面的分页滚动行为
- 修复快速回复滚动发帖的行为
- 在 canResize 方法检查中修复反向逻辑
- 通过消除双重提取并添加适当的 JSON 验证,使附加的归档验证器更稳健
- Finder::getCollectionFromResults 不检查 hydrateFromGrouped 的返回结果不是空的
- 确保选项值在检索时被转换为正确的数据类型
- 模板表达式中作子优先顺序错误
- 发布构建器在关联插件目录下失败
- 邮件退信解析器现在能处理多位数状态码(#1240)
- API 路由生成的开发输出无效
- 使用缓存时提升CSS的传递效率
- 避免在裁剪变化时不必要地写原始头像
- 保留一些内存用于错误报告
- 在CLI上下文中从板子URL拉取协议和主机
- 在使用 Templater 的 array_* 函数时添加对 AbstractCollection 的支持(#2182)
- 重构Lightbox侧边栏切换作并确保初始化正确