TYPO3 v10 升级流体显示器 HTML 标签
TYPO3 v10 Upgrade Fluid Displays HTML Tags
我最近从第 9 版升级到第 10 版,之后,我覆盖流体模板的一些扩展呈现普通 html,就像这样:
<center><div id="event-id-{event.uid}-arrow"class="arrow-down"></div></center>
打字稿:
plugin.tx_sfeventmgt {
view {
templateRootPaths {
0 = {$plugin.tx_sfeventmgt.view.templateRootPath}
1 = fileadmin/templates/sf_event_mgt/Templates/
}
partialRootPaths {
0 = {$plugin.tx_sfeventmgt.view.partialRootPath}
1 = fileadmin/templates/sf_event_mgt/Partials/
}
layoutRootPaths {
0 = {$plugin.tx_sfeventmgt.view.layoutRootPath}
1 = fileadmin/templates/sf_event_mgt/Layouts/
}
}
}
Partials/Event/ListItem.html:
<div style="cursor: pointer; margin-left: -0.75rem; margin-right: -0.75rem; " onclick="" class="list-view-item hoverbackground">
<center><div id="event-id-{event.uid}-arrow"class="arrow-down"></div></center>
</div>
<p> </p>
任何提示为什么这发生在版本 10 而不是版本 9 上?
此致
您的问题的解决方案很可能是,您必须删除模板或布局文件中某处的 <f:format.html>
viewHelper。
我建议您逐步删除模板文件(模板、布局和部分)中的 <f:format.html>
,以便识别 ViewHelper 在何处使用“错误”。
背景:
通过安全修复 TYPO3-CORE-SA-2021-013,HTML 消毒剂组件已被引入 TYPO3 核心。该组件可确保在通过 <f:format.html>
ViewHelper 呈现内容时转义潜在的恶意标记。此 ViewHelper 通常应该用于呈现富文本字段中的内容。如果您使用此 ViewHelper 来呈现普通的 HTML,那么您将遇到所描述的问题,因为 HTML 清理器将简单地转义不允许的标记。
示例:
<f:format.html>
<style>p {font-size: 10px;}</style>
<center>Text is centered</center>
<strong>Text is bold</strong>
<f:link.external uri="https://typo3.org">https://typo3.org</f:link.external>
</f:format.html>
这将呈现以下内容 HTML:
<p> </p>
<p> <style>p {font-size: 10px;}</style></p>
<p> </p>
<p> </p><center>Text is centered</center>
<p> </p>
<p> <strong>Text is bold</strong></p>
<p> </p>
<p> <a href="https://typo3.org" target="_blank" rel="noreferrer">https://typo3.org</a></p>
<p> </p>
你看,<style>
和 <center>
标签在渲染时都被转义了(类似于你截图中的场景)。
注意:请不要简单地将<f:format.html>
viewHelper替换为<f:format.raw>
,因为这可能会在ViewHelper时引入跨站点脚本安全漏洞与不受信任的用户输入一起使用。
此外,请不要通过在安装工具中设置 [SYS][features][security.frontend.htmlSanitizeParseFuncDefault] = false
在前端上下文中禁用 HTML 消毒程序。
我最近从第 9 版升级到第 10 版,之后,我覆盖流体模板的一些扩展呈现普通 html,就像这样:
<center><div id="event-id-{event.uid}-arrow"class="arrow-down"></div></center>
打字稿:
plugin.tx_sfeventmgt {
view {
templateRootPaths {
0 = {$plugin.tx_sfeventmgt.view.templateRootPath}
1 = fileadmin/templates/sf_event_mgt/Templates/
}
partialRootPaths {
0 = {$plugin.tx_sfeventmgt.view.partialRootPath}
1 = fileadmin/templates/sf_event_mgt/Partials/
}
layoutRootPaths {
0 = {$plugin.tx_sfeventmgt.view.layoutRootPath}
1 = fileadmin/templates/sf_event_mgt/Layouts/
}
}
}
Partials/Event/ListItem.html:
<div style="cursor: pointer; margin-left: -0.75rem; margin-right: -0.75rem; " onclick="" class="list-view-item hoverbackground">
<center><div id="event-id-{event.uid}-arrow"class="arrow-down"></div></center>
</div>
<p> </p>
任何提示为什么这发生在版本 10 而不是版本 9 上?
此致
您的问题的解决方案很可能是,您必须删除模板或布局文件中某处的 <f:format.html>
viewHelper。
我建议您逐步删除模板文件(模板、布局和部分)中的 <f:format.html>
,以便识别 ViewHelper 在何处使用“错误”。
背景:
通过安全修复 TYPO3-CORE-SA-2021-013,HTML 消毒剂组件已被引入 TYPO3 核心。该组件可确保在通过 <f:format.html>
ViewHelper 呈现内容时转义潜在的恶意标记。此 ViewHelper 通常应该用于呈现富文本字段中的内容。如果您使用此 ViewHelper 来呈现普通的 HTML,那么您将遇到所描述的问题,因为 HTML 清理器将简单地转义不允许的标记。
示例:
<f:format.html>
<style>p {font-size: 10px;}</style>
<center>Text is centered</center>
<strong>Text is bold</strong>
<f:link.external uri="https://typo3.org">https://typo3.org</f:link.external>
</f:format.html>
这将呈现以下内容 HTML:
<p> </p>
<p> <style>p {font-size: 10px;}</style></p>
<p> </p>
<p> </p><center>Text is centered</center>
<p> </p>
<p> <strong>Text is bold</strong></p>
<p> </p>
<p> <a href="https://typo3.org" target="_blank" rel="noreferrer">https://typo3.org</a></p>
<p> </p>
你看,<style>
和 <center>
标签在渲染时都被转义了(类似于你截图中的场景)。
注意:请不要简单地将<f:format.html>
viewHelper替换为<f:format.raw>
,因为这可能会在ViewHelper时引入跨站点脚本安全漏洞与不受信任的用户输入一起使用。
此外,请不要通过在安装工具中设置 [SYS][features][security.frontend.htmlSanitizeParseFuncDefault] = false
在前端上下文中禁用 HTML 消毒程序。