Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Improve restricted expression evaluation mode #809

Closed
danielfernandez opened this issue Nov 2, 2020 · 0 comments
Closed

Improve restricted expression evaluation mode #809

danielfernandez opened this issue Nov 2, 2020 · 0 comments

Comments

@danielfernandez
Copy link
Member

danielfernandez commented Nov 2, 2020

Current status

Currently the restricted expression evaluation mode is applied in the following scenarios (see note below):

  • Pre-processing expressions: __...__
  • Unescaped output: th:utext and inlined unescaped expressions.
  • All th:on* attribute processors for JavaScript events which value is a Thymeleaf Standard Expression (see Enable processing of HTML event handler attributes in JAVASCRIPT template mode #707).
  • th:attr attribute processor that enables the creation of variables with arbitrary name to be used elsewhere in the template.
  • Template and fragment names in Fragment expressions: ~{...} or contents of th:insert, th:replace, th:include and th:substituteby
  • Fragment parameters in Fragment Expressions (~{...} or th:insert, th:replace, etc.) so that template fragments cannot be called with parameters which values come from direct user input (would be a scenario equivalent to that of th:attr).
  • Default attribute processor (see Default attribute support #297), which allows the rendering of any attribute with an arbitrary name (just in case it is a JS event or anything similar)
  • URL bases in Link Expressions (@{...}) (URL parameters will not be restricted)
  • th:src and th:href (except URL parameters inside Link Expressions as explained above)
  • Output expressions in TEXT template mode, even if escaped, any use in any position (safest due to the lack of knowledge on the use it's being given).

This restricted mode applies the following restrictions:

  • No access allowed to the request parameters: ${param.*} and also to any of:
    • ${#request.getParameter(...)}
    • ${#request.getParameterValues(...)}
    • ${#request.getParameterMap()}
    • ${#request.getQueryString()}
    • ${#httpServletRequest.getParameter(...)}
    • ${#httpServletRequest.getParameterValues(...)}
    • ${#httpServletRequest.getParameterMap()}
    • ${#httpServletRequest.getQueryString()}
  • In th:on* attribute processors which attribute is a Thymeleaf Standard Expression: no expression is allowed to have a result of types other than numeric or boolean.

Modifications to the restricted mode

The new restrictions to be applied would include, for all scenarios where it is applicable:

  • Creation of new objects (new ...)
  • Access to static code (@identifier@ in OGNL, T(identifier) in SpringEL)
@danielfernandez danielfernandez added this to the Thymeleaf 3.0 milestone Nov 2, 2020
@danielfernandez danielfernandez self-assigned this Nov 2, 2020
danielfernandez added a commit that referenced this issue Dec 12, 2020
danielfernandez added a commit to thymeleaf/thymeleaf-spring that referenced this issue Dec 12, 2020
danielfernandez added a commit to thymeleaf/thymeleaf-spring that referenced this issue Dec 12, 2020
danielfernandez added a commit to thymeleaf/thymeleaf-spring that referenced this issue Dec 12, 2020
danielfernandez added a commit to thymeleaf/thymeleaf-spring that referenced this issue Dec 12, 2020
danielfernandez added a commit to thymeleaf/thymeleaf-tests that referenced this issue Dec 12, 2020
danielfernandez added a commit to thymeleaf/thymeleaf-tests that referenced this issue Dec 12, 2020
danielfernandez added a commit to thymeleaf/thymeleaf-tests that referenced this issue Dec 12, 2020
danielfernandez added a commit to thymeleaf/thymeleaf-tests that referenced this issue Dec 13, 2020
danielfernandez added a commit to thymeleaf/thymeleaf-tests that referenced this issue Dec 13, 2020
danielfernandez added a commit to thymeleaf/thymeleaf-tests that referenced this issue Dec 13, 2020
danielfernandez added a commit to thymeleaf/thymeleaf-tests that referenced this issue Dec 14, 2020
danielfernandez added a commit to thymeleaf/thymeleaf-tests that referenced this issue Dec 14, 2020
danielfernandez added a commit to thymeleaf/thymeleaf-tests that referenced this issue Dec 14, 2020
danielfernandez added a commit to thymeleaf/thymeleaf-tests that referenced this issue Dec 14, 2020
danielfernandez added a commit to thymeleaf/thymeleaf-tests that referenced this issue Dec 14, 2020
danielfernandez added a commit to thymeleaf/thymeleaf-tests that referenced this issue Dec 14, 2020
danielfernandez added a commit to thymeleaf/thymeleaf-tests that referenced this issue Dec 14, 2020
danielfernandez added a commit to thymeleaf/thymeleaf-tests that referenced this issue Dec 14, 2020
danielfernandez added a commit to thymeleaf/thymeleaf-tests that referenced this issue Dec 14, 2020
danielfernandez added a commit to thymeleaf/thymeleaf-tests that referenced this issue Dec 20, 2020
danielfernandez added a commit to thymeleaf/thymeleaf-tests that referenced this issue Dec 20, 2020
danielfernandez added a commit to thymeleaf/thymeleaf-tests that referenced this issue Dec 20, 2020
danielfernandez added a commit to thymeleaf/thymeleaf-tests that referenced this issue Dec 20, 2020
danielfernandez added a commit to thymeleaf/thymeleaf-tests that referenced this issue Dec 20, 2020
danielfernandez added a commit to thymeleaf/thymeleaf-tests that referenced this issue Dec 20, 2020
Martin-BG added a commit to Martin-BG/Marketplace that referenced this issue Jul 18, 2021
christlang added a commit to christlang/spring_thymeleaf that referenced this issue Jan 4, 2022
devnokiyo added a commit to devnokiyo/new-relic-spring-boot that referenced this issue Jan 3, 2023
- ThymeleafでT(identifier)の記述が制限されたので回避する
- thymeleaf/thymeleaf#809
hthole pushed a commit to hthole/thymeleaf that referenced this issue Jul 18, 2023
hthole pushed a commit to hthole/thymeleaf that referenced this issue Jul 18, 2023
chriskellet pushed a commit to KedosConsultingLtd/thymeleaf-spring that referenced this issue Apr 16, 2024
chriskellet pushed a commit to KedosConsultingLtd/thymeleaf-spring that referenced this issue Apr 16, 2024
chriskellet pushed a commit to KedosConsultingLtd/thymeleaf-spring that referenced this issue Apr 16, 2024
chriskellet pushed a commit to KedosConsultingLtd/thymeleaf-spring that referenced this issue Apr 16, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant