java - 在 Thymeleaf 中禁用静态上下文和方法调用

标签 java thymeleaf

我们目前使用 Thymeleaf 来解析模板。我们希望向我们的用户提供此功能,以便用户可以提供自定义模板。然而,Thymeleaf 非常强大,可以调用方法和访问静态资源。

有什么方法既可以禁止调用 Java 方法(或将一些重要调用列入白名单),也可以禁止 Thymeleaf 访问静态字段和方法?

我们只需要允许用户使用基本的 IF 语句、循环和访问对象字段。

最佳答案

简而言之——不敢。

We are currently using Thymeleaf to parse templates. We want to offer this feature to our users so that users can provide custom templates. However, Thymeleaf is very powerful and is able to call methods and access static resources.

是的,而且它的设计目的是在没有我所知道的禁用此功能的(安全)方式的情况下这样做。即使您可以通过某种预处理器黑客来禁用您想要的功能,但依赖它的防水性对我来说似乎是非常冒险的——我真的不建议这样做。 (例如,即使用户没有访问任何不愉快的内容,他们仍然可以重复执行随机代码以使服务器停滞不前并使页面加载缓慢。)

相反,我会寻找更“正常”的途径来公开用户期望通过端点看到的功能,他们可以通过 AJAX 调用这些端点。然后,他们可以使用普通的旧 HTML/JS 构建表单,并在此过程中额外调用他们需要的任何其他资源。

如果您担心额外的 AJAX 调用,您还可以静态注入(inject)一个 JSON 对象,其中包含用户在页面标题中可能需要的所有内容 - 然后他们可以在他们想要的任何地方显示该内容。

关于java - 在 Thymeleaf 中禁用静态上下文和方法调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50046428/

相关文章:

javascript - Thymeleaf Spring 中的 Google 图表。 JavaScript 循环

java - 如何在 thymeleaf Numbers.sequence() 方法中使用 Constants 类中的变量?

java - 在 GAE 上使用 Hamcrest 1.3 和 Maven 的 NoSuchMethodError

java - 在 JSP 中处理页面导航的最佳策略

java - 克隆与实例化一个新类

java - 如何修复包 R 不存在 setContentView(R.layout.activity_main) 及其后果?

java - 我的电脑无法安装 Java

java - Thymeleaf 片段有时不起作用

java - Spring Web Flow 空白绑定(bind)应该为 null,而不是空字符串

javascript - Thymeleaf + Javascript 选择选项更改