Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/378.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
避免java包';freemarker';执行_Java_Freemarker - Fatal编程技术网

避免java包';freemarker';执行

避免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

我使用freemaker作为我的模板引擎。 我有一个安全问题,我不知道如何处理: 管理员用户可以修改模板, 但如果他们将设置如下输入:

`<#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);请毫不犹豫地写出解决方案和代码示例(可能不仅仅是那一行,还包括完整的初始化)作为答案,并接受它,以便将来的访问者能够从中受益。这就是做事的方式。