如何在 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 带我走上正轨。
自 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 带我走上正轨。