Skip to content

Security: route-forge/php-laravel

Security

SECURITY.md

安全策略

本文档说明如何报告 route-forge/laravel 的安全问题,以及部署本包时必须理解的安全边界。

报告漏洞

请勿通过公开 Issue 报告漏洞。 使用 GitHub 私密漏洞报告:

https://github.com/route-forge/php-laravel/security/advisories/new

维护者确认收到后会尽快回复。若确认存在漏洞,修复会在私有 fork 中准备,并与安全通告(GHSA) 一并发布;在此之前请勿公开披露细节。

报告时尽量包含:受影响版本、完整 config/forge.php 相关片段、最小复现请求(含 HTTP 方法与 来源 IP)、你判断的危害面。

支持版本

版本 是否获得安全修复
2.x
1.x ❌ 不再主动维护,可照报评估

版本兼容矩阵(PHP / Laravel)见 .docs/SPEC.md §7。

部署边界(必读)

本包的设计前提:元信息端点是公开端点,路由的层级归属(tier)不是访问控制手段。请逐条确认。

  1. 层级端点的中间件保护必须显式配置。 levels.*.endpoint_middleware 与顶层 endpoint_middleware 默认均为空 = 不限制访问。 若某个层级的路由清单本身属于敏感信息(暴露内部路径、参数名、管理端点), 你必须自己给它挂上认证 / 授权中间件。参见 .docs/SPEC.md §3.1.5。

  2. strict_mode = false 会把未分级路由汇入 unassigned 层级。 默认行为下,任何未匹配到层级的具名路由都会进入公开的 unassigned 层并出现在摘要里。 生产环境建议 strict_mode = true:未分级路由会直接抛 RouteTierNotAssignedException,从而在开发阶段就被发现,而不是静默泄露清单。

  3. 管理器页面只允许在开发环境存在。 /_forge/manager 仅在 APP_DEBUG = true 时注册,并由 manager_allowed_ips 做第二层 IP 白名单(默认 ['127.0.0.1', '::1'],即仅本机)。 生产环境务必保证 APP_DEBUG = false——这是唯一必要的一道闸,IP 白名单只是纵深防御。 白名单取值口径(SPEC §3.3):列表精确匹配;'*' 放行任意来源;单个字符串等价于只含它的数组; 该键完全缺失时按默认值仅放行本机;只有显式 null[] 才是放开限制,此时任何来源都能 读取全部路由元信息与运行时配置,请确认确有需要。

  4. @forgeSummary 只内嵌摘要,绝不内嵌层级路由明细。 受保护路由的清单始终按层级经 HTTP 懒加载,不会被预置进公开 HTML。 请不要为了"提速"把这个不变量改掉。

  5. 不要在 levels.*.description 等会随元信息下发的字段里写敏感信息。 这些字段会出现在摘要端点响应中,任何能访问该端点的人都能读到。

相关文档

There aren't any published security advisories