b13 / trusted-url-params
TYPO3 扩展,确保只有来自 TYPO3 路由的安全 queryParams 被添加到生成的链接中
Requires
- php: ^7.2 || ^8.0
- typo3/cms-core: ^9.5.16 || ^10.0 || ^11.0 || ^12.0
This package is auto-updated.
Last update: 2024-09-17 13:22:03 UTC
README
此 TYPO3 扩展修改了链接生成,以确保只包含由 TYPO3 的路由解析的当前查询参数($_GET
)。
背景
TYPO3 的 typolink
功能非常强大,但同时也带来很多历史问题。从 TYPO3 v9 开始引入的 TYPO3 路由解决了许多问题。
然而,一个主要问题仍然存在:使用 typolink
的选项 addQueryString
。如果使用,此选项会将任何现有的 $_GET
参数添加到生成的 URL 中,并在最坏的情况下生成一个有效的 cHash。
addQueryString
允许定义要排除的 GET 参数列表,然而这个问题无法通过排除列表正确解决,而应该通过允许列表。从 TYPO3 v9 开始,我们已经有了一个“允许列表”,即当前请求的当前请求的所有 GET 参数或路由路径中找到的参数(“路由参数”)。这比使用纯 $_GET
数组生成“addQueryString”逻辑要好得多。
自从 TYPO3 v9 以来,由于常用的 seo
扩展使用 addQueryString
生成规范标签或语言菜单,因此这个问题变得更加明显。
我们是如何修复的
此扩展提供了一个 XCLASS(因为目前还没有其他方法可以挂钩到链接生成的地方),并且只从当前 URL 中获取安全的查询参数,并且只为使用 addQueryString
标志的生成的 URL。
何时使用此扩展
我们建议使用此扩展
- 如果您在 SEO 营销中遇到问题并且存在无效的规范标签
- 或者(有效的)机器人抓取了疯狂的链接并填充了您的缓存后端或消耗了您的服务器资源
- 并且您知道您在其他地方没有滥用“addQueryString”,例如您的 TypoScript 或第三方扩展
请参阅https://typo3.org/security/advisory/typo3-psa-2021-003 获取更多详细信息。
TYPO3 v12
TYPO3 v12 最终强制执行 addQueryString 以仅允许“受信任”的 URL 参数,使此扩展变得过时,但是当扩展使用旧功能时,扩展仍然与 TYPO3 v12 兼容。
请参阅https://review.typo3.org/c/Packages/TYPO3.CMS/+/75864 了解相关的核心更改。
安装
通过 composer req b13/trusted-url-params
安装此扩展或从 TYPO3 扩展存储库 下载它,然后在您的 TYPO3 安装中的扩展管理器中激活扩展。
注意:此扩展与 TYPO3 v9、v10 和 v11 兼容。
配置
此扩展默认提供安全 URL,无需进一步配置。但是,自定义 TypoLink 链接可以使用 addQueryString.includeUntrusted = 1
属性包括作为 GET 参数添加的 URL 参数(例如 SolR 的查询字符串)。
可能的副作用
因为我们相信“允许列表”的概念,我们还想扩展此配置以允许在配置中(例如站点配置)允许常规查询参数,这可能会引起问题。
灵感
- TYPO3 核心版 v9 路由(感谢 Oliver Hader 和 Benni Mack)
- Helmut Hummel(关于如何以“核心方式”解决问题的原始想法)
- 扩展 "urlguard"(感谢 SourceBroker 的 Krystian Szymukowicz)
- 扩展 "urlguard2"(感谢 Studio Mitte 的 Georg Ringer)
- 扩展 "seo-canonical-guard"
致谢
此扩展由 Benni Mack 在 2021 年为 b13 GmbH, Stuttgart 创建。
了解更多我们开发的 TYPO3 扩展,这些扩展帮助我们为客户项目带来价值。作为我们工作方式的一部分,我们专注于测试和最佳实践,以确保我们所有代码的长期性能、可靠性和效果。