TYPO3 11升级至12后video标签被转实体问题求助
TYPO3 12升级后video/source/track标签被转义的解决方案
你遇到的问题核心是TYPO3 12引入了HtmlSanitizer组件,它会在内容保存和渲染阶段对HTML进行安全过滤,之前的TypoScript和RTE配置没有覆盖这个新组件的规则,导致标签被转义。以下是分步解决方法:
1. 配置HtmlSanitizer(关键步骤)
在站点的config.yaml文件中添加对video、source、track标签的允许规则,同时指定允许的属性(按需添加,避免多余权限):
frontend: htmlSanitizer: default: allowedTags: - video - source - track allowedAttributes: video: - controls - width - height - poster - autoplay # 按需添加,不需要可删除 source: - src - type track: - src - kind - srclang - label - default
2. 完善RTE配置
TYPO3 12的RTE(CKEditor)配置方式有调整,需要同时配置编辑器和处理规则:
- 在RTE预设配置文件(如
rte_ckeditor/Configuration/RTE/Default.yaml)中添加:
editor: config: extraAllowedContent: 'video[*];source[*];track[*]' extraPlugins: 'mediaembed' # 启用支持媒体标签的插件 processing: allowTags: - video - source - track allowTagsOutside: - video - source - track
- 同时在TypoScript中确保RTE处理规则生效:
RTE.default.proc { allowTags := addToList(video,source,track) allowTagsOutside := addToList(video,source,track) htmlSanitize = 1 # 强制使用HtmlSanitizer替代旧过滤逻辑 }
3. 检查字段TCA配置
确认bodytext字段的TCA类型为text并启用富文本,避免input类型自动转义:
'bodytext' => [ 'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.text', 'config' => [ 'type' => 'text', 'enableRichtext' => true, 'richtextConfiguration' => 'default', 'cols' => 40, 'rows' => 15, 'softref' => 'typolink_tag,email[subst],url[subst]', ], ],
4. 清除所有缓存
修改配置后必须清除TYPO3的全部缓存(包括配置缓存、页面缓存),确保新规则生效。
安全说明
通过以上配置,你只允许了必要的视频相关标签和属性,没有关闭整体安全过滤,既能解决标签转义问题,又能防范XSS等安全风险,符合安全要求。
内容的提问来源于stack exchange,提问作者Luca
相关产品推荐
相关产品推荐

