ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Parse Server 发布版本变更日志解析:从 9.x 新特性到破坏性变更的完整升级指南

Parse Server 发布版本变更日志解析:从 9.x 新特性到破坏性变更的完整升级指南 后端认证鉴权【免费下载链接】parse-serverParse Server for Node.js / Express项目地址https://gitcode.com/gh_mirrors/pa/parse-server点击查看免费下载Parse Server 是基于 Node.js/Express 的开源后端框架其官方发布版本变更日志changelogs/CHANGELOG_release.md完整记录了从 2.0 到 9.10 的每一次功能演进、安全修复与破坏性变更。本文以该变更日志为核心骨架结合仓库源码如 src/Options/Definitions.js与迁移指南9.0.0.md、8.0.0.md、6.0.0.md系统梳理 Parse Server 近几个大版本的核心变化。读完本文你将掌握 9.x 系列的新增配置项与安全加固要点、8.x/7.x/6.x/5.x 的破坏性变更清单以及各版本对应的运行时依赖要求Node.js / MongoDB / PostgreSQL从而制定出一条清晰、低风险的升级路径。变更日志的版本结构读懂的规则changelogs/CHANGELOG_release.md遵循语义化版本规范SemVer按时间倒序排列每个版本条目包含以下固定结构主版本Major以# [9.0.0]形式标记包含### BREAKING CHANGES小节明确列出必须处理的破坏性变更次版本Minor以# [9.10.0]形式标记通常同时包含### Bug Fixes与### Features代表向后兼容的新功能补丁版本Patch以## [9.10.1]形式标记仅包含 Bug Fixes / Security Fixes不含新功能与破坏性变更。此外日志中还包含### Security Fixes、### Performance Improvements、### Other Changes等小节。每条变更都会标注对应的 GitHub issue/PR 编号如#10536以及安全公告编号如GHSA-863r-39r9-vfcf方便追溯原始讨论与补丁提交。仓库的发布流程由 semantic-release 驱动见 package.json 中devDependencies的semantic-release/changelog等工具并配有 ci/CiVersionCheck.js 等 CI 校验脚本保证版本号与日志条目一致。一个值得注意的历史事件版本 4.5.1 曾被错误发布并已移除且 4.10.0 条目中记录了 2021 年 7 月发生的一次版本标签事故——一批错误的 git 版本标签被推送到仓库并链接到贡献者个人 fork官方明确建议任何使用受影响版本的用户紧急升级到4.10.0。这提醒我们锁定精确版本号、关注官方变更日志是安全使用 Parse Server 的前提。Parse Server 9当前主版本的演进9.0.0 的破坏性变更基线9.0.0 是 8.x 到 9.x 的分水岭其### BREAKING CHANGES明确列出了所有升级必须处理的变更Node.js 最低版本升至20.19.0同时移除了旧版本支持MongoDB 最低版本升至7.0.16PostgreSQL 最低版本升至16PostGIS 最低版本升至3.5GraphQL 引擎升级到 Apollo Server 5GraphQL introspection 默认不再公开必须使用masterKey或显式设置graphQLPublicIntrospection: true才能启用路由模式语法切换为 path-to-regexp v8云函数路由与限流配置中的通配符语法全面更新例如/functions/*需改为/functions/*pathenableInsecureAuthAdapters默认值改为false对应 Deprecation DEPPS13数据库选项allowPublicExplain默认值改为falseDEPPS12即Parse.Query.explain默认需要 master keyPublicAPIRouter被PagesRouter取代DEPPS11Parse.Object在 Cloud Function 中默认被编码并移除选项encodeParseObjectInCloudFunctionDEPPS10。其中路由语法的具体迁移步骤在 9.0.0.md 中有完整示例新语法使用*path通配符限流配置的requestPath需同步更新否则会触发明确的弃用报错。9.x 新增安全加固与配置项9.1 ~ 9.10从 9.1.0 到 9.10.1日志中密集出现两类内容安全公告GHSA 编号驱动的漏洞修复和防御性配置项的新增。以下是按主题归纳的核心要点路由与访问控制9.8.0 引入服务器选项routeAllowList可将外部客户端 REST API 访问限制在白名单路由内。对应源码 src/Options/Definitions.jsrouteAllowListenvPARSE_SERVER_ROUTE_ALLOW_LIST详细说明了其语义设置后默认拒绝所有非 master key 的外部 REST 请求仅放行匹配正则的路由每条目按规范化路由标识符如classes/GameScore、login、functions/sendEmail做^...$全匹配文件路由、Pages API 与 GraphQL API 不受此选项约束空数组[]表示完全封锁 REST 路由。查询与请求复杂度9.8.0 新增requestComplexity.allowRegex可禁用$regex查询操作符与requestComplexity.subqueryLimit限制子查询结果9.6.0 起将批处理请求子请求数上限requestComplexity.batchRequestLimit设为可配置。这些选项共同服务于防止深度嵌套操作符GHSA-cgxm-vr2f-6fj8与无界查询复杂度GHSA-cmj3-wx7h-ffvg造成的拒绝服务。文件上传/下载9.8.0 新增fileDownload选项对应源码fileDownloadenvPARSE_SERVER_FILE_DOWNLOAD_OPTIONS用于限制文件下载9.5.0 允许通过Parse.File.maxUploadSize按单次上传覆盖服务器级maxUploadSize9.3.0 增加fileUpload.allowedFileUrlDomains校验Parse.File.url以防范 SSRF。9.x 日志中还集中修复了多条文件上传存储型 XSS 漏洞如 GHSA-r899-h629-j84r、GHSA-v8x7-r927-cc93、GHSA-7wqv-xjf3-x35v、GHSA-v5hf-f4c3-m5rv核心是完善fileUpload.fileExtensions扩展名/Content-Type 白名单校验。密钥与身份9.5.0 引入readOnlyMasterKeyIps源码中 envPARSE_SERVER_READ_ONLY_MASTER_KEY_IPS默认[0.0.0.0/0, ::0]限制只读 master key 的可用 IP并允许通过request.isReadOnly识别 Cloud Function 是否由只读 master key 触发9.10.0 新增禁止只读 master key 使用聚合管道的选项进一步收紧其能力边界。protectedFields 系列豁免选项9.6.0/9.7.0 引入了三个围绕protectedFields受保护字段的细粒度开关源码 src/Options/Definitions.js 给出了明确默认值选项默认值语义protectedFieldsOwnerExempttrue_User类是否豁免于protectedFields为true时用户可查看自己对象的所有字段含默认受保护的emailprotectedFieldsTriggerExemptfalseCloud Code 触发器beforeSave、afterSave等是否豁免为true时触发器在request.object/request.original中获得完整对象protectedFieldsSaveResponseExempttrue保存操作创建/更新的响应是否豁免为true时响应中包含被修改的受保护字段其他值得关注的新能力9.9.0 为聚合查询新增rawValues/rawFieldNames选项并新增 installationdeviceToken去重选项对应源码installationenvPARSE_SERVER_INSTALLATION9.5.0 支持Parse.File.setDirectory/setMetadata/setTags与流式上传9.1.0 允许以 Express 风格为 Cloud Function 响应自定义 HTTP 状态码与响应头9.3.0 起支持通过Buffer、Readable、ReadableStream流式上传文件。9.x 修复的高频漏洞模式从 9.0 到 9.10 的安全修复可以归纳为几类反复出现的攻击面了解它们有助于在自建部署时提前自查prototype pollution原型链污染多条 GHSA 涉及 Cloud Code 触发器上下文、Cloud Function 分发、请求关键字扫描等环节的原型污染问题如 GHSA-5j86-7r7m-p8h6、GHSA-4263-jgmp-7pf4、GHSA-vpj2-qq7w-5qq6protectedFields / ACL 绕过大量漏洞集中在 LiveQuery 订阅、$relatedTo关系查询、逻辑操作符、点号表示法dot-notation等路径绕过受保护字段与对象 ACL如 GHSA-wmwx-jr2p-4j4r、GHSA-9pp-xhh6-75mf、GHSA-mf3j-86qx-cq5jSQL / NoSQL 注入PostgreSQL 适配器多次修复Increment、聚合、distinct、点号字段名等路径的 SQL 注入如 GHSA-qpr4-jrj4-6f27、GHSA-c442-97qw-j6c6、GHSA-p2w6-rmh7-w8q3NoSQL 侧则包括操作符注入删除 installation、token 类型注入等GraphQL 信息泄露公开 introspection 关闭时类型名、字段名、枚举名、错误建议仍可能泄露 schema如 GHSA-8cph-rgr4-g5vj、GHSA-gxxq-pghq-9vrc、GHSA-48q3-prgv-gm4w并发竞态race condition密码重置 token、MFA 一次性验证码/恢复码、账户锁定阈值在并发请求下被绕过如 GHSA-r3xq-68wh-gwvh、GHSA-jpq4-7fmq-q5fj、GHSA-2299-ghjr-6vjp限流绕过通过 batch 子请求、HTTP 方法覆盖、X-Forwarded-For伪造、查询字符串附加等方式绕过 rate limit如 GHSA-775h-3xrc-c228、GHSA-p84r-h6rx-f2xr。9.x 的依赖升级主线9.x 系列持续跟进依赖安全升级9.10.1 将parse/push-adapter升到 8.5.x、parse升到 8.6.x、ws升到 8.21.x9.10.0 将body-parser、express-rate-limit、qs、undici、follow-redirects一并升级9.8.0 升级lodash至 4.18.x9.2.0 升级 MongoDB 驱动至 7.x、apollo/server至 5.4.x。这些升级大多属于依赖层面的 Bug/Security Fix但 MongoDB 驱动大版本升级9.4.1 中升级到 mongodb 7.1.0可能引入连接行为差异升级时建议同步关注官方驱动迁移说明。Parse Server 8Express 5 与 TypeScript 的里程碑8.0.0 的破坏性变更主要集中在四方面Express 4 升级到 Express 5如果 Parse Server 被挂载在自定义 Express 应用上官方建议同步升级到 Express 5否则未来版本可能因依赖 Express 5 特性而产生兼容性问题Parse JS SDK 升级到 6.0.0SDK 自带破坏性变更需查阅其发布说明移除邮件验证与密码重置流程中的用户名PII为减少基础设施日志中的个人身份信息验证/重置流程改为使用内部 token自定义 HTML 页面与邮件需相应调整。迁移细节见 8.0.0.md例如重发验证邮件改为POST /resend_verification_email且 body 携带token运行时依赖最低版本整体上调Node 至18.20.4 / 20.18.0 / 22.12.0MongoDB 至6.0.19 / 7.0.16 / 8.0.4移除 4.x/5.xPostgres 至15、PostGIS 至3.3移除 13/14 等旧版。功能层面8.0.0 支持将masterKey设为函数实现动态 master key并正式引入 TypeScript 支持仓库 types/index.d.ts 即为其产物。8.5.0 增加了beforePasswordResetRequest钩子、MongoDB 客户端事件日志选项logClientEvents、以及脱敏错误响应的enableSanitizedErrorResponse8.6.0 为 GraphQL 新增cloudConfig查询与updateCloudConfig变更。8.x 同样以安全修复为主旋律/sessions/me、/upgradeToRevocableSession、/login、/verifyPassword等端点多次因绕过_Session/_User的protectedFields而修复。Parse Server 7默认安全策略的全面收紧7.0.0 是一次默认安全配置大规模变更的版本其破坏性变更包括allowClientClassCreation默认改为falseDEPPS5客户端默认不能直接创建类认证适配器默认禁用DEPPS6使用auth.provider.enabled: true显式启用allowExpiredAuthDataToken默认改为falseDEPPS8过期第三方认证 token 将导致登录失败LiveQueryfields选项更名为keysDEPPS9Cloud Code 文件触发器语法统一DEPPS7如Parse.Cloud.beforeDeleteFile改为Parse.Cloud.beforeDelete(Parse.File, ...)masterKeyIps强制执行未在masterKeyIps中注册的 IP 即使访问公开资源也会被拒绝未捕获异常导致进程以退出码 1 终止便于环境自动重启但可能与原有unhandledRejection处理逻辑冲突移除 Node 14/16、Postgres 11/12 支持。7.x 新增能力同样可圈可点extendSessionOnUse自动续期会话6.3.0 引入、按ip/user/session/global分区的限流 zone、beforeLogin/afterLogin触发器上下文、动态邮件验证函数verifyUserEmails可设为函数实现条件验证、MongoDB/Postgres 兼容矩阵持续外扩7.4.0 支持 MongoDB 8、Postgres 17、PostGIS 3.5。Parse Server 6异步初始化与维护密钥6.0.0 的最重要变化是异步初始化模型Parse Server 必须await server.start()之后才能挂载server.app到 Express从而避免Cloud Code 尚未注册就接收请求的竞态。导入方式也统一为const ParseServer require(parse-server)与解构导入均可返回实例详见 6.0.0.md。其他破坏性变更包括maintenanceKey引入访问下划线开头的内部字段需要使用维护密钥master key 不再能读取内部字段官方警告这些字段属于未正式文档化的内部作用域可能在无通知情况下变化masterKey默认仅限 localhost 使用需通过masterKeyIps显式放行远程 IPdirectAccess与enforcePrivateUsers默认改为trueParse.Cloud.httpRequest被移除改用第三方 HTTP 库聚合管道要求原生 MongoDB 语法如$match带$前缀、_id而非objectId嵌套对象改为 JSON 序列化存储修复了此前嵌套Date等类型被错误保存为原始 JSON 对象的缺陷。6.0.0 还引入了基于 IP 的请求限流rateLimit、新版认证适配器接口支持 MFA 与 challenge、ParseQuery.watch仅监听指定字段变更、Node 19 支持等。Parse Server 5GraphQL、安全扫描与实验特性5.0.0 的破坏性变更奠定了后续安全默认路线的基础requestKeywordDenylist敏感关键字扫描为修复远程代码执行漏洞GHSA-p6h4-93qp-jhcm引入请求数据深扫_bsontype: Code、constructor、__proto__等关键字命中即返回 HTTP 400 / Parse Error 105INVALID_KEY_NAME可用requestKeywordDenylist: []覆盖默认值文件上传默认仅限已认证用户通过fileUpload参数放宽移除parse-server-simple-mailgun-adapter与 S3 Files Adapter需单独安装移除 MongoDB 3.6 与 PostgreSQL 10、Node 10 支持GraphQL 字段删除语义修正置null才删除字段。5.x 的功能亮点包括官方 GraphQL 支持5.3.0 从 Apollo 切换到 GraphQL Yoga7.0.0 又切回 Apollo v49.0.0 升级 Apollo 5、账号锁定策略accountLockout、密码策略含历史记录、afterLogout/afterFind等更多 Cloud Code 触发器、Parse.Cloud.sendEmail便捷方法、Docker 镜像发布到 Docker Hub 等。值得注意的是 5.1.0 以NOTABLE CHANGES形式发布了一组本应属于大版本的变更如移除 GridStore 适配器、移除官方 Node 15 支持。运行时依赖最低版本速查表综合各版本 BREAKING CHANGES 与 README.md 的兼容性矩阵可整理出清晰的升级基线版本Node.jsMongoDBPostgreSQL / PostGIS9.0.0≥20.19.0≥7.0.16≥16/ ≥3.58.0.0≥18.20.4 / 20.18.0 / 22.12.0≥6.0.19 / 7.0.16 / 8.0.4≥15/ ≥3.37.0.0≥18.20.4 / 20.18.0 / 22.12.0≥6.0.19 / 7.0.16 / 8.0.4≥15/ ≥3.36.0.0≥12.22.10移除 12/17移除 4.0移除 11/125.0.0≥12.22.10移除 10移除 3.6移除 10当前仓库 package.json 的engines字段为20.19.0 21.0.0 || 22.13.0 23.0.0 || 24.11.0 25.0.0与 9.x 的 Node 支持范围一致。每个主版本的发布还伴随ci/nodeEngineCheck.js等脚本在 CI 中自动校验引擎版本。制定你的升级路线图结合以上梳理可以将升级路径总结为五个步骤盘点当前版本与依赖确认现有 Node.js / MongoDB / PostgreSQL / Parse JS SDK / Express 版本对照上表确认每一步的兼容基线阅读目标版本的迁移指南仓库为 6.0.0、8.0.0、9.0.0 分别提供了迁移文档6.0.0.md、8.0.0.md、9.0.0.md其中包含索引创建注意事项、token 复用策略如emailVerifyTokenReuseIfValid、路由语法改造等实操细节逐级处理破坏性变更优先处理安全相关的默认值变更enableInsecureAuthAdapters、allowPublicExplain、allowClientClassCreation、requestKeywordDenylist等再处理运行时与框架升级Express 5、MongoDB 驱动、Apollo Server 5验证关键业务路径在升级后的测试环境中回归登录/注册、邮件验证/密码重置、LiveQuery 订阅、GraphQL 操作、文件上传下载与推送尤其关注日志中反复出现的高危攻击面prototype pollution、protectedFields 绕过、注入与限流绕过关注安全公告变更日志中所有 GHSA 编号条目都代表已公开的漏洞修复升级后可通过官方安全公告渠道持续跟踪新的公告并评估是否影响当前部署。需要说明的是本文所有结论均基于当前仓库中 changelogs/CHANGELOG_release.md、各版本迁移指南及 src/Options/Definitions.js 等源码文件版本能力与默认值以仓库实际内容为准迁移指南中引用的外部链接如 Express 5 迁移指南仅作背景参考具体行为请以仓库内文档与源码为最终依据。赞分享后端认证鉴权【免费下载链接】parse-serverParse Server for Node.js / Express项目地址https://gitcode.com/gh_mirrors/pa/parse-server点击查看免费下载相关推荐Vitess v18.0.0 版本发布详解新特性、破坏性变更与升级指南Vitess v18.0.0 版本发布详解新特性、破坏性变更与升级指南 导读 本文基于 Vitess 官方 v18.0.0 发布说明系统梳理该版本带来的全部数据库分布式数据库云原生后端数据存储react-icons版本更新日志v4.0新特性与破坏性变更详解react icons版本更新日志v4.0新特性与破坏性变更详解 你是否还在为React项目中的图标管理而烦恼升级依赖后图标显示异常本文将详细解析reac前端UI组件OpenSearch 3.0.0 版本发布全解析破坏性变更、核心新特性与升级指南OpenSearch 3.0.0 版本发布全解析破坏性变更、核心新特性与升级指南 本文基于 OpenSearch 官方发布的 3.0.0 Release No搜索引擎全文检索可观测性数据分析上一篇Atmosphere项目常见问题解决方案下一篇MagicTime的XFormers优化提升内存效率的终极指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表