如何防止TYPO3的规范标签中的外来GET参数?

时间:2021-05-15 08:53:34

标签: typo3 typo3-10.x

如果在前端调用一个未缓存的页面,并带有一个无法预见的 GET 参数,并且已从外部源的链接(如跟踪参数或更糟糕的东西)附加到 URL 中,例如……

https://www.example.com/?note=any-value

... 然后这个外部参数在自动生成的规范标签中传递,由 TYPO3 的核心扩展 ext:seo 创建。它看起来像这样:

<link rel="canonical" href="https://www.example.com/?note=any-value&amp;cHash=f2c206f6f14a424fdbf82f683e8bf383"/>

另外,页面是用这个参数保存在缓存中的。这意味着后续访问者也会收到这个不正确的规范标签,即使他们在没有参数的情况下调用页面 https://www.example.com/

这是一个错误(在 TYPO3 10.4.15 上测试)还是可以通过配置禁用所有未知参数?

如果知道参数,可以在配置中排除:

[FE][cacheHash][excludedParameters] = L,pk_campaign,pk_kwd,utm_source,utm_medium,…

我只关心非预期的参数。扭转这个概念并基本上排除一些自定义的允许参数之外的所有参数可能是有意义的,但我目前不知道这是否可行。

2 个答案:

答案 0 :(得分:0)

明白了。实际上,TYPO3 已经为其他常见的跟踪和附加参数处理了这些,例如 Lutm_campaignfbclid 等。可以找到排除参数的完整列表 in the source code。< /p>

要添加您自己的文件,只需添加/修改 typo3conf/AdditionalConfiguration.php 文件,例如:

<?php

$GLOBALS['TYPO3_CONF_VARS']['FE']['cacheHash']['excludedParameters'][] = 'note';
$GLOBALS['TYPO3_CONF_VARS']['FE']['cacheHash']['excludedParameters'][] = 'foo';
$GLOBALS['TYPO3_CONF_VARS']['FE']['cacheHash']['excludedParameters'][] = 'bar';

<?php

$GLOBALS['TYPO3_CONF_VARS']['FE']['cacheHash']['excludedParameters'] = array_merge(
    $GLOBALS['TYPO3_CONF_VARS']['FE']['cacheHash']['excludedParameters'],
    ['note', 'foo', 'bar'],
);

毕竟不要忘记清除缓存:D(这应该是TYPO3的口号)

答案 1 :(得分:0)

这是一个错误。扩展程序 urlguard2 解决了这个问题。

相关问题