首页/安全/漏洞与攻击面速查/模板注入(SSTI)原理与防护
Web 漏洞原理与防护55 条

模板注入(SSTI)原理与防护

服务端模板引擎把用户输入当模板内容渲染(而非作为变量数据)时,可能执行模板表达式能力范围内的逻辑;防护是区分『模板』与『数据』:不拼接模板字符串,只渲染固定模板并传参数。

漏洞与攻击面速查安全更新于 2026-10-12
常见引擎Jinja2、Twig、Freemarker、Velocity、Thymeleaf
成因render_template_string(用户输入) 或模板路径可控
防护固定模板文件 + 变量参数;收敛表达式能力

风险与安全对比(Jinja2)

风险与安全对比(Jinja2)
风险:render_template_string('Hello ' + name)
安全:render_template('hello.html', name=name)
模板内容始终来自代码仓库,绝不来自请求
需要用户自定义展示时,使用受限占位符替换而非直接暴露模板引擎能力。

易错点

  • 把沙箱模式当万能解:不同引擎沙箱存在逃逸历史,源头仍是不要让输入进入模板层

数据来源与参考

  • OWASP SSTI 说明
  • Jinja2 文档(SandboxedEnvironment)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌