避免java包';freemarker';执行
我使用freemaker作为我的模板引擎。 我有一个安全问题,我不知道如何处理: 管理员用户可以修改模板, 但如果他们将设置如下输入:避免java包';freemarker';执行,java,freemarker,Java,Freemarker,我使用freemaker作为我的模板引擎。 我有一个安全问题,我不知道如何处理: 管理员用户可以修改模板, 但如果他们将设置如下输入: `<#assign ex = "freemarker.template.utility.Execute"?new()>${ ex("pwd")}`. `${ex(“pwd”)}`。 然后代码将调用: freemarker.core.Environment.process() 将执行命令“pwd”。如何避免它?从2.3.19版开始,有了Templa
`<#assign ex = "freemarker.template.utility.Execute"?new()>${ ex("pwd")}`.
`${ex(“pwd”)}`。
然后代码将调用:
freemarker.core.Environment.process()
将执行命令“pwd”。如何避免它?从2.3.19版开始,有了
TemplateClassResolver。更安全的解析器可以用来完全禁止执行,这是一个解决方案吗?那太好了。你有如何使用它的例子吗?明白了!谢谢这是它应该如何使用的:Environment env=。。。。。;环境setNewBuiltinClassResolver(TemplateClassResolver.SAFER_RESOLVER);请毫不犹豫地写出解决方案和代码示例(可能不仅仅是那一行,还包括完整的初始化)作为答案,并接受它,以便将来的访问者能够从中受益。这就是做事的方式。