
OpenProject 17.6.0 版本深度解读XWiki 集成、Sprint 目标、Backlog Bucket 能力与安全加固【免费下载链接】openprojectOpenProject is the leading open source project management software for product, project and portfolio management. A powerful Jira alternative with agile planning, issue tracking, roadmaps, Gantt charts, time tracking, collaboration features, and more. Available on premises or in the cloud. ⭐ Star us on GitHub项目地址: https://gitcode.com/GitHub_Trending/op/openprojectOpenProject 17.6.0 于 2026-07-08 发布官方建议在具备条件时尽快升级到该版本。本篇基于官方 Release Notesdocs/release-notes/17-6-0/README.md并结合当前仓库源码系统讲解本版本的核心功能变更、底层技术改动与全部安全修复读完后你将掌握 XWiki 企业级 Wiki 集成与内建 Wiki 的启用方式、Backlogs 模块新增的 Sprint 目标与“全部 Sprint”视图、Backlog Bucket 在工作包全链路的落地细节、语义标识符在导出与保留标识符管理中的行为变化以及 SSRF 防护扩展、LDAP 组同步增强、CSV 导出转义等运维与安全配置要点。一、版本概览17.6.0 延续了 OpenProject “全面开源项目管理与协作平台” 的产品路线。本版本的主线可以概括为四类知识管理整合新增 XWiki 集成Enterprise 附加组件并改进内建 Wiki 模块使其可以作为“内部 Wiki 提供方”接入统一的 Wiki 提供方体系敏捷规划增强Backlogs 模块新增 Sprint 目标、全部 Sprint 总览视图工作包支持 Backlog Bucket 属性及其在表格中的过滤、排序与分组行政与运维能力语义标识符扩展到全部导出格式、旧语义标识符可解除保留、LDAP 组同步支持基于组条目属性配置安全加固扩展 SSRF 全局过滤到存储与 Wiki 集成、CSV 导出转义控制字符、LDAP 用户绑定防暴力破解限流并修复 4 个已公开的安全漏洞。二、重要功能变更2.1 XWiki 集成Enterprise 附加组件17.6 引入了与 XWiki 的新集成使项目工作与文档管理更紧密地结合。对希望在自有基础设施上同时管理项目与文档的组织而言OpenProject XWiki 构成一套一体化的开源解决方案尤其适合现有 XWiki 用户以及希望以主权开源方案替代专有组合如 Jira Confluence的场景。使用前提与操作路径系统管理员需先在 OpenProject 的后台设置中将外部 Wiki 配置为Wiki 提供方Administration → Wikis详见系统管理员指南docs/system-admin-guide/wikis/wiki-providers配置完成后工作包详情页新增一个专属 Wikis 标签页用户可以在其中查看关联的 Wiki 页面、创建新页面、以及把 XWiki 中已有的内容链接过来集成同时支持双向引用用户可以看到哪些 Wiki 页面引用了某个工作包也可以在描述、评论和文档中直接插入指向 Wiki 页面的链接保持项目工作与文档在两个平台之间的连续性。注意XWiki 集成面向需要高级 Wiki 与文档能力的组织作为 Enterprise 附加组件在 Corporate 计划中提供。从仓库源码看该集成的实现集中在独立的wikis模块中结构与 Release Notes 描述的能力一一对应数据模型modules/wikis/db/migrate/20260318133701_create_wiki_providers.rb 创建 Wiki 提供方表modules/wikis/db/migrate/20260318133702_create_wiki_page_links.rb 创建页面链接表对应“提供方管理 页面关联”两套核心实体工作包 Wikis 标签页modules/wikis/app/controllers/work_package_wikis_tab_controller.rb 与 modules/wikis/app/components/wikis/work_package_wikis_tab_component.rb 分别提供标签页数据与视图组件双向引用modules/wikis/app/models/wikis/relation_page_link.rb、inline_page_link.rb及reverse_inline_page_link.rb对应“关联链接、内联链接、反向引用Referenced in”三类关系spec目录下的xwiki_providers系列查询测试如referencing_pages_spec.rb印证了“查找引用了该工作包的 XWiki 页面”的服务端实现API 层面modules/wikis/lib/api/v3/page_links/与modules/wikis/lib/api/v3/providers/提供 APIv3 的页面链接与提供方端点与 Release Notes 中 “Create API for wiki page links / wiki provider of type xwiki” 的条目吻合。2.2 内建 Wiki 改进OpenProject 的内建 Wiki 模块在 17.6 同样得到增强内建 Wiki 可以**作为“内部提供方”**通过新的集成体系被启用——系统管理员可在 Administration → Wikis → Internal wiki 中激活对应系统管理员指南docs/system-admin-guide/wikis/的 “Project wikis” 一节用户可以从工作包新增的Wikis 标签页链接到所有已激活的 Wiki包括内建 Wiki若未启用该集成内建 Wiki 仍然作为普通项目模块可用行为不变官方明确计划在后续版本中继续改进内建 Wiki。2.3 Sprint 目标Sprint goalsBacklogs 模块新增 Sprint 目标创建或编辑 Sprint 时可以直接在 Sprint 设置中定义 Sprint 目标目标随后展示在 Sprint 头部让所有参与该 Sprint 的成员可见。从源码可以确认其数据模型迁移文件 modules/backlogs/db/migrate/20260519144514_create_sprint_goals.rb 新建sprint_goals表包含sprint_id、project_id外键均为null: false删除时级联与text字段并建立了[%i[sprint_id project_id], unique: true]唯一索引——这从结构上印证了“一个 Sprint 至多一个目标”的约束。展示侧的实现见 modules/backlogs/app/components/backlogs/sprint_component.rb模型行为有modules/backlogs/spec/models/sprint_goal_spec.rb等测试覆盖。2.4 “全部 Sprint”总览视图Backlogs 模块新增All sprints页面提供项目内所有 Sprint 的总览视图。每个 Sprint 展示其状态、开始与结束日期、以及已分配工作包数量等关键信息便于在项目层面掌握全部 Sprint 的进展与计划状态详见用户指南docs/user-guide/backlogs-scrum/的 All sprints 一节。2.5 工作包上的 Backlog Bucket 属性本版本为工作包引入了Backlog bucket 属性若在工作包类型上启用用户可以直接在工作包详情中查看与管理其所属的 Backlog bucket。两个关键行为规则无需进入 Backlogs 模块即可把工作包分配到 backlog bucket由于一个工作包只能属于 Sprint 或 Backlog bucket 二者之一选择其中一个会自动移除另一个的分配。2.6 按 Backlog Bucket 分组、排序与过滤工作包表格新增对 Backlog bucket 的支持可以将 Backlog bucket 作为列加入工作包表格并基于它进行过滤、排序和分组。这让 backlog 归属在表格视图中可见团队可以更有效地组织、筛选与分析 backlog 条目。2.7 Sprint 共享下沉至 Basic Enterprise 计划基于客户反馈Sprint sharing 功能从 Corporate 计划调整为 Basic Enterprise 计划包含使更多 Enterprise 客户可以使用该能力。2.8 导出支持项目级语义标识符17.6 将项目级语义标识符的支持扩展到所有导出场景语义标识符现在一致地出现在Excel 与 CSV 导出会议纪要MeetingPDF 导出工时表TimesheetPDF 导出。这保证了导出数据与用户在 OpenProject 各页面看到的标识符保持一致。对应的变更条目包括 “Adapt Excel and CSV exports for semantic identifiers”、“Adapt meeting PDF exports”、“Adapt PDF Export of timesheets” 等并修复了 “Semantic identifier is missing in XLS timesheets” 的问题。2.9 解除旧项目语义标识符的保留项目标识符被重命名后旧标识符会一直保留以维持既有链接与集成可用。17.6 将这一保留机制扩展到项目级语义标识符并允许管理员主动解除保留让旧标识符可以被其他项目重新使用。从源码看该功能的完整链路管理入口app/controllers/admin/settings/project_reserved_identifiers_controller.rb仅管理员可访问before_action :require_admin列表通过Project.identifier_slugs.historically_reserved作用域查询确认与释放操作通过 Turbo Streams 渲染ReleaseDialogComponent确认对话框最终调用ProjectIdentifiers::ReleaseReservedIdentifierService完成解除保留界面组件app/components/admin/settings/project_reserved_identifiers/下的表格、行与释放对话框组件文档参考docs/system-admin-guide/projects/reserved-project-identifiers/README.md 以及项目标识符管理说明 docs/system-admin-guide/manage-work-packages/work-package-identifiers/README.md。2.10 会议议程项一键转换为工作包Meetings 模块的议程项agenda item新增Convert to work package操作用户无需离开会议即可将议程项直接转为工作包新创建的工作包会与议程项保持链接把会议讨论与后续跟进工作关联起来详见用户指南docs/user-guide/meetings/one-time-meetings/。2.11 按项目配置成本类型Cost types新增项目级成本类型配置项目管理员可以控制每个项目内可用的成本类型。为此项目设置新增Time and costs区域其中包含专门的Cost types选项卡用于配置可用成本类型。配套修复包括 “Cost fields are still showing on WPs even if all cost types are disabled in the project” 等确保禁用后成本字段同步隐藏。三、重要技术变更3.1 CSV 导出转义控制字符安全相关17.6 改进了 CSV 导出安全导出数据中的控制字符会被转义防止电子表格应用以非预期方式解释导出值即防范公式注入一类的风险。如果确实需要导出未经修改的机器可读 CSV可以在新的 Exports 管理页Administration → System settings → Exports上关闭该行为。该变更源于安全通告 GHSA-fv8m-h8hc-57gq官方在 Release Notes 中致谢了报告者。3.2 LDAP 组同步支持基于组条目属性Enterprise 附加组件LDAP 组同步扩展支持组成员属性管理员现在可以基于 LDAP 组上的member或uniqueMember等属性配置同步而不再局限于在用户条目上做memberOf查找。这显著提升了对不维护memberOf属性的 LDAP 服务器的兼容性详细说明见系统管理员指南docs/system-admin-guide/authentication/ldap-connections/ldap-group-synchronization。源码印证modules/ldap_groups/app/services/ldap_groups/synchronize_groups_service.rb 中通过group.filter.member_lookup_attribute读取配置的属性名再调用read_group_member_dns(ldap_con, group.dn, member_attribute)从组条目直接读取成员 DN——正是“从组侧属性解析成员”的实现方式。3.3 存储与 Wiki 集成如 Nextcloud、XWiki纳入全局 SSRF 过滤OpenProject 在较早版本中已加入 SSRF服务端请求伪造防护阻止 OpenProject 向私有 IP 地址空间发起网络请求。从 17.6 开始这些防护同样适用于存储storages与 Wiki 集成发起的 Web 请求。运维影响如果你的 Nextcloud 或 XWiki 实例只能通过私有不可公网路由IP 访问必须将其加入 SSRF 白名单否则集成将无法工作。通常通过定义如下环境变量实现OPENPROJECT_SSRF_PROTECTION_IP_ALLOWLIST2001:db8:100::/48该列表接受一个或多个 IP 地址或 CIDR 网段被列出的地址将豁免 SSRF 过滤。源码印证lib/open_project/ssrf_protection.rb 定义了OpenProject::SsrfProtection继承自SsrfFilter其allowed_ip_address?方法逐条匹配OpenProject::Configuration.ssrf_protection_ip_allowlist中是否包含目标 IP命中白名单即视为“安全地址”放行post/get则封装了 SSRF 安全的请求默认禁用 POST 重定向避免 payload 泄漏到非预期服务器。config/initializers/与lib_static/open_project/configuration/helpers.rb中定义了该配置项的解析spec/lib/open_project/ssrf_protection_spec.rb提供了行为测试。相关错误类见 lib/open_project/server_side_request_forgery_error.rb。3.4 Meeting API 结构变更破坏性变更需注意面向 API 集成方17.6 有两类变化新增meeting outcomes端点所有会议相关资源的 self link 改为扁平flat结构。具体而言POST/PATCH/DELETE /api/v3/meetings/:id/agenda_items不再可用相应能力迁移到/api/v3/meeting_agendas/outcomes 与 sections 同理。这一调整符合 APIv3 规范同时修复了与 self link 相关的缺陷对应 Bugfix 条目 “GET /api/v3/meetings/{id}/agenda_items returns incorrect section link format” 等。源码印证modules/meeting/config/routes.rb 中 outcomes 挂载在controller: meeting_outcomes的独立资源路由下与“会议资源扁平化”的路由重构一致。四、安全修复本版本包含以下安全修复均附官方 GitHub 安全通告编号可在仓库 Release Notes 中检索原文按规则此处不贴外部链接CVE-2026-55095inplace-edit 对话框泄露 admin-only 项目自定义字段的注释文本已认证的非管理员项目成员可以针对原始custom_field_id项目属性请求 inplace-edit 对话框获取admin_only项目自定义字段的注释文本常规可见性/可写作用域对该用户隐藏此字段但对话框路径按原始 id 解析自定义字段并以只读模式渲染其注释。该漏洞的声明范围明确收窄仅泄露自定义字段注释文本不涉及字段值泄露、写入或篡改。该问题由 YesWeHack 的 OpenProject 漏洞赏金计划欧盟委员会赞助报告通告编号 GHSA-63fg-pgqj-3qf8。GHSA-c6rc-4288-8p4fPATCH /api/v3/work_packages/{id} 的fileLinks参数越权PATCH /api/v3/work_packages/{id}接受可写的_links.fileLinks载荷属性但更新路径缺少创建路径上已有的user_allowed_to_manage_file_links校验且底层 setter 按原始 id 无作用域地解析Storages::FileLink记录。持有edit_work_packages但没有manage_file_links、甚至不是受害项目成员的用户可以分离并因dependent: :delete_all而硬删除其可编辑工作包上的全部 FileLink将数据库中任意 FileLink按数字 id 指定重新挂到攻击者控制的工作包上从而读取其元数据原始文件名、origin id、mime type同时将其从受害者的工作包中移除。通告编号 GHSA-c6rc-4288-8p4fYesWeHack 计划报告。GHSA-v3j7-vqwv-5w5qTime/Cost Entries 全局 API 泄露私有工作包标题与 idGET /api/v3/time_entries与GET /api/v3/cost_entries是实例/工作区范围的集合端点。每条记录通过 representer 的associated_resource :work_package关联工作包渲染_links.workPackage.title工作包主题与_links.workPackage.href顺序工作包 id时未检查该工作包对请求者是否可见。集合仅受view_time_entries/view_cost_entries项目权限授权——这是独立于view_work_packages的权限。因此在项目中持有view_time_entries或view_cost_entries但没有view_work_packages的用户可以读到其无法通过工作包 API 直接访问直接访问返回 404的工作包主题与 id。这与此前已修复的 GHSA-g387-6rm2-xw88“单条会议议程项 API 泄露私有工作包数据”属同一披露类别该修复将会议议程项 representer 关联的工作包从无门控的associated_resource迁移到可见性门控的associated_visible_resource而 Time/Cost Entries 的 representer 未同步更新。报告者为 CyberKareem通告编号 GHSA-v3j7-vqwv-5w5q。GHSA-wr3w-qchj-p4cmGET /api/v3/custom_options/:id 敏感数据暴露OpenProject 支持以CustomOption记录存储可选值的列表型自定义字段用户/组自定义字段可标记为admin_only常规可见性作用域会将其对非管理员隐藏。但GET /api/v3/custom_options/:id按全局数字 id 解析CustomOption且显式放行所有“所属字段为UserCustomField或GroupCustomField”的选项不检查所属字段对请求者是否可见。攻击者只需普通账号即可由于自定义选项 id 是顺序数字 id且常规 API schema/form 会暴露可见选项链接如/api/v3/custom_options/id攻击者可枚举邻近 id 并读取成功响应中的value从而泄露 admin-only 用户或组自定义字段的选项标签——即管理员刻意设为仅管理员可见的内部分类体系。通告编号 GHSA-wr3w-qchj-p4cmYesWeHack 计划报告。LDAP 用户绑定的防暴力破解保护针对此前安全通告 GHSA-vhfq-8mwf-g79w 的报告17.6 改进了 OpenProject 内部登录机制对暴力破解的防护。考虑到生产环境 AD 系统通常自带防暴破机制、但 LDAP 用户绑定对 OpenProject 而言是“透明”的管理员可能误以为 OpenProject 自身的防暴破设置会生效——17.6 为此为内部登录机制实现了Rack::Attack 限流规则特别覆盖 LDAP 绑定。源码印证限流体系入口为 config/initializers/rack-attack.rb非测试环境启用Rack::Attack并调用OpenProject::RateLimiting.set_defaults!登录相关的限流规则见 lib/open_project/rate_limiting/login.rb 与 lib/open_project/rate_limiting/base.rb。五、缺陷修复与变更摘要Release Notes 附带了完整的自动生成功能/修复清单共 100 余条完整列表见 docs/release-notes/17-6-0/README.md。按主题归纳本版本的主要修复集中在Wiki/XWiki 集成XWiki 特性开关未强制启用、内联 Wiki 页面链接两侧多出空格、以 final page 为父级创建页面导致父级错误、种子数据补充默认 Wiki 权限等Backlogs/Sprint“All Sprints” 列表排序错误、“Move to inbox” 菜单缺少 “backlog” 字样、工作包卡片优先级列宽度固定等工作包编辑器文档/卡片单个工作包链接复制粘贴失效、内联链接拖拽生成副本而非移动、卡片缩放应拆分所在句子、拖拽工作包链接触发网络重载、Safari 内联链接选择 UI 异常、BlockNote 卡片边框圆角丢失等Meetings APIagenda_items section 链接格式错误、participants 计数与内嵌不一致、_links.participants无法移除/重复添加、会议系列状态与数据不一致Web 与 API 之间、已结束系列无法通过 API 获取历史会议、删除用户导致重复参会人等十余项 API 一致性修复Jira 迁移附件导入异常、禁用优先级字段导致导入中断、Jira 侧空邮箱中断导入、多个 Jira 账号同邮箱/登录名导致迁移停止等Nextcloud 存储两个含 “” 字符的文件夹导致 “Could not find file in Cloud”权限与后台无save_cost_reports权限的用户仍能保存公开成本报告、删除项目级通知返回 404、新用户管理页默认只显示活跃用户、存储登录按钮失效等通用体验VoiceOver 整页重载后自动朗读控件、移动端无法打开项目选择器、通知中心计数徽章大数字被裁剪、随机密码邮件未发送、OPENPROJECT_EMAILS__HEADER_EN中冒号被误解析为 hash 等。六、贡献致谢官方对赞助本版本已发布或即将发布功能的 Helmholtz-Zentrum Berlin、科隆市City of Cologne、德铁Deutsche Bahn与 ZenDiS 表示感谢并感谢 Rince Wind、Walid Ibrahim、Gábor Alexovics、Brandon Soonaye、Mohammed Mohiuddin 等社区成员对缺陷报告与修复的协助以及 Crowdin 平台上的翻译贡献者特别致谢将文档 FAQ 译为西班牙语的 Maximiliano Spaccesi。如希望参与翻译可参考贡献指南中的翻译指南docs/contributions-guide/translate-openproject/。七、升级要点清单面向管理员与集成方SSRF 白名单检查凡通过私有 IP 访问的 Nextcloud / XWiki以及后续纳入范围的存储与 Wiki 集成确认已配置OPENPROJECT_SSRF_PROTECTION_IP_ALLOWLIST避免升级后集成中断Meeting API 客户端若你的集成调用/api/v3/meetings/:id/agenda_items等嵌套路径需迁移到扁平化的/api/v3/meeting_agendas/等新端点并适配 outcomes 新端点与 self link 变化CSV 导出行为默认导出将转义控制字符如依赖原始机器可读 CSV请在 Administration → System settings → Exports 关闭该标志标识符治理如组织存在大量历史项目标识符评估是否需要在新管理页解除保留以释放命名空间LDAP 同步对不维护memberOf的目录服务器可改用组条目的member/uniqueMember属性配置同步成本类型项目管理员可按项目收敛可用成本类型注意与预算、成本字段的联动显示行为。【免费下载链接】openprojectOpenProject is the leading open source project management software for product, project and portfolio management. A powerful Jira alternative with agile planning, issue tracking, roadmaps, Gantt charts, time tracking, collaboration features, and more. Available on premises or in the cloud. ⭐ Star us on GitHub项目地址: https://gitcode.com/GitHub_Trending/op/openproject创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考