Freemarker中的多语言自动转义

时间:2016-11-23 01:16:21

标签: javascript html xss freemarker

我最近在Freemarker中启用了自动转义,并将我的.ftl文件更改为.ftlh,以确保它们以HTML格式/转义格式化/转义。但是,这意味着任何内联<script><style>标记都会转义HTML,这不是我想要的。我可以通过这样做解决问题:

<script>
    [#outputformat "JavaScript"]
         jQuery(".stuff").blah();
    [/#outputformat]
</script>

这很有效,但是在每个脚本标记的内容周围添加这个包装似乎要做很多工作。似乎有一个足够智能的OutputFormat来检测脚本/样式标签并使用正确的格式,或者具有与上述相同效果的自定义标签。类似的东西:

[@smartscript]
    jQuery(".stuff").blah();
[/@smartscript]

这样的事情(或解决这个问题的其他任何事情)是否已经存在?我找不到任何东西。

1 个答案:

答案 0 :(得分:1)

除了预处理自定义TemplateLoader中的模板(包装另一个TemplateLoader并过滤其返回的Reader)之外,目前还没有解决方法。宏也无济于事,因为#outputformat没有运行时效果。它只是将FTL源代码的各个部分与输出格式相关联。