Отключение статического контекста и вызова метода в Thymeleaf - PullRequest
0 голосов
/ 26 апреля 2018

В настоящее время мы используем Thymeleaf для разбора шаблонов. Мы хотим предложить эту функцию нашим пользователям, чтобы пользователи могли предоставлять собственные шаблоны. Однако Thymeleaf очень мощный и способен вызывать методы и обращаться к статическим ресурсам.

Есть ли способ отключить как вызов Java-методов (или внести некоторые важные вызовы в белый список), так и отключение доступа Thymeleaf к статическим полям и методам?

Нам нужно только разрешить пользователям использовать базовые операторы IF, циклы и доступ к полям объекта.

1 Ответ

0 голосов
/ 26 апреля 2018

Короче - не бойся.

В настоящее время мы используем Thymeleaf для разбора шаблонов. Мы хотим предложить эту функцию нашим пользователям, чтобы пользователи могли предоставлять собственные шаблоны. Однако Thymeleaf очень мощный и способен вызывать методы и обращаться к статическим ресурсам.

Это так, и он предназначен для этого без (безопасного) способа, который я знаю для отключения этой функции. Даже если бы вы могли отключить то, что вы хотите, с помощью какого-то препроцессорного хака, полагать, что это водонепроницаемый, кажется мне невероятно рискованным - я бы не советовал. (Даже если пользователи не имеют доступа к чему-либо нежелательному, например, они все равно могут многократно выполнять произвольный код, чтобы перегружать сервер и медленно загружать страницу.)

Вместо этого я бы посмотрел на более «нормальный» способ раскрытия функциональности, которую пользователи ожидают увидеть через конечную точку, которую они могут вызывать через AJAX. Затем они могут создавать свои формы в старом обычном HTML / JS, совершая дополнительные вызовы для любых других ресурсов, которые им нужны по пути.

Если вы беспокоитесь о дополнительных вызовах AJAX, вы также можете статически внедрить объект JSON, который содержит все, что может понадобиться пользователю, в заголовке страницы - они могут затем отображать содержимое этого содержимого в любом месте.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...