【问题标题】:Is freemarker template HTML escaped by defaultfreemarker模板HTML是否默认转义
【发布时间】:2015-12-30 00:23:01
【问题描述】:

我刚开始使用 freemarker 模板。我想确保它们是 HTML 转义以避免 XSS 漏洞。

我尝试使用此模板并将锚标记作为变量传递

String dummyAnchorTagVariable = "<a href='https://example.com'>Visit mysite</a>"

并在freemarker模板中使用

<div> ${dummyAnchorTagVariable} </div>

这样做的结果是看到整个文本,包括网页上的标签,而不是链接。所以我假设 freemarker 是 HTML 默认转义

但是当我尝试查找与之相关的文档时,我在任何地方都找不到说 Freemarker 是 HTML 默认转义的 http://freemarker.incubator.apache.org/docs/ref_directive_escape.html

甚至还有一篇博文(虽然很旧)描述了如何使其默认逃逸)http://watchitlater.com/blog/2011/10/default-html-escape-using-freemarker/

所以我对 Freemarker 中的 HTML 转义有点困惑。

【问题讨论】:

    标签: html templates freemarker templating


    【解决方案1】:

    默认情况下,2.3.24 之前的 FreeMarker 不会转义,除非有人使用自定义 TemplateLoader 将模板放入 &lt;#escape x as x?html&gt;...&lt;/#escape&gt;。如果这就是您的情况,那么&lt;#noescape&gt;${dummyAnchorTagVariable}&lt;/#noescape&gt; 将起作用,否则它将给出错误,因为没有活动的#escape 可以禁用。

    FreeMarker 2.3.24 可以在没有 TemplateLoader 技巧的情况下自动转义(在撰写本文时它还没有发布,但希望 RC1 会在几天内发布,并在 2 月完成)。

    【讨论】:

      猜你喜欢
      • 2012-02-12
      • 2010-11-18
      • 2011-05-26
      • 1970-01-01
      • 2018-10-27
      • 2012-12-26
      • 2018-04-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多