1

自 2021 年 8 月发布阻止通过富文本内容进行跨站点脚本的安全补丁以来,我注意到 HTML 内容元素的输出在我们的项目中突然发生了变化。新引入的HTML Sanitizer删除了一些标签属性和标签(当模板被修改以便t3://呈现样式 TypoLinks 时)。

因此,简单地覆盖默认的Html.htmlFluid Template、更改<f:format.raw>to<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 Content Elements 提供的 html 代码输出发生变化的最简单方法是通过添加lib.parseFunc.htmlSanitize = 0到 TypoScript 配置来全局禁用 sanitizer,这并不理想。

我怎样才能禁用parseFunc.htmlSanitize唯一为此目的?

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

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

4

1 回答 1

0

只需复制lib.parseFunc并禁用此副本中的消毒剂即可。

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

然后在你的模板中使用这个库。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.parseHtmlFunc">
            {data.bodytext}
        </f:format.html>
    </f:format.htmlentitiesDecode>
</f:section>

感谢@OliverHader 让我走上正轨。

于 2021-09-10T19:25:40.050 回答