Overview of Template Engines

Alternate Table
Template Engine Language Syntax Example Common Use Case SSTI Risk Notes
Jinja2 Python
{{ 7*7 }}
Flask apps ✅ High Most common SSTI in CTFs
Django Templates Python
{{ var }}, {% block %}
Django framework ⚠️ Medium Limited expression support
Twig PHP
{{ var }}, {% if %}
Laravel, Symfony ✅ High Inspired by Jinja2
Smarty PHP
{$var}
Older PHP apps ✅ High Can access PHP functions
Blade PHP
{{ var }}, @if()
Laravel ⚠️ Low Escapes by default, but bypasses exist
Velocity Java
$var, #if()
Apache Velocity ✅ High Java class access possible
FreeMarker Java
${var}
Java web apps ✅ High Also allows Java method access
Thymeleaf Java
th:text="${var}"
Spring Boot ⚠️ Medium Safer by design, but misuse possible
EJS JavaScript
<%= var %>
Express apps (Node.js) ⚠️ Low Mostly client-safe, but XSS possible
Pug (Jade) JavaScript
#{var} or != var
Node.js (Express) ⚠️ Low Escapes by default
Handlebars JavaScript
{{var}}, {{#if}}
Frontend, Node.js ⚠️ Medium SSTI via prototype pollution possible
Mustache JS, Go, etc.
{{var}}
Lightweight templating ⚠️ Low Logic-less, safer by design
Razor C# / ASP.NET
@Model.Property
ASP.NET MVC ⚠️ Medium Can be dangerous in rare cases
Liquid Ruby/JS/etc.
{{ var }}, {% if %}
Shopify, Jekyll ⚠️ Low Sandboxed, safer than Jinja2
Template Engine Overview