如何在 TYPO3 HTML 内容元素中使用 t3:// TypoLinks 而无需全局禁用 `parseFunc.htmlSanitize`?

How to use t3:// TypoLinks in TYPO3 HTML Content Elements without disabling `parseFunc.htmlSanitize` globally?

自 2021 年 8 月发布安全补丁以来,该补丁阻止了 Cross-Site Scripting via Rich-Text Content I noticed that the output of HTML Content Elements suddenly changed in our projects. Some tag attributes and tags got removed by the newly introduced HTML Sanitizer(修改模板以便呈现 t3:// 样式的 TypoLink)。

所以简单地 overriding the default Html.html Fluid Template,将 <f:format.raw> 更改为 <f:format.html> 并添加 html 解码(如下例所示)已不再足够。

<f:section name="Main">
    <f:comment> We use this to render links and other stuff in html elements </f:comment>
    <f:format.htmlentitiesDecode>
        <f:format.html parseFuncTSPath="lib.parseFunc">
            {data.bodytext}
        </f:format.html>
    </f:format.htmlentitiesDecode>
</f:section>

防止 html 内容元素提供的 html 代码输出发生变化的最简单方法是通过将 lib.parseFunc.htmlSanitize = 0 添加到您的 TypoScript 配置中来全局禁用消毒剂,但不是理想。

如何才能禁用 parseFunc.htmlSanitize 仅用于此目的?

或者是否有其他解决方案可以在 HTML 内容元素中呈现 TypoLink?

注意:如果不覆盖 Html.html 模板,则无需禁用 HTML Sanitizer!

只需复制 lib.parseFunc 并在该副本中禁用消毒剂。

lib.parseHtmlFunc < lib.parseFunc
lib.parseHtmlFunc.htmlSanitize = 0

然后在您的 Html.html 模板中使用此 lib

<f:section name="Main">
    <f:comment> We use this to render links and other stuff in html elements </f:comment>
    <f:format.htmlentitiesDecode>
        <f:format.html parseFuncTSPath="lib.parseHtmlFunc">
            {data.bodytext}
        </f:format.html>
    </f:format.htmlentitiesDecode>
</f:section>

感谢@OliverHader 带我走上正轨。