Pular para o conteúdo
Todos os conceitos

Injeção de template

Quando a entrada do usuário entra no texto do template, o texto dela vira código do template.

Um motor de template monta páginas a partir de um texto com buracos: Hello, {{ name }}! é um template, e o motor troca {{ name }} pelo valor de name. Isso é seguro quando o template é fixo (escrito pelo programador) e os valores entram por fora, pelo contexto.

A injeção de template no servidor (SSTI) acontece quando o programa cola o que o usuário escreveu DENTRO do template, em vez de passar como dado. Aí a entrada deixa de ser só um valor: vira parte da linguagem do template. O motor avalia o que o usuário escreveu.

O teste clássico é mandar {{7*7}}. Se a tela mostrar {{7*7}}, a entrada é dado (seguro). Se mostrar 49, o motor avaliou a sua entrada: é SSTI. A conta acontece no servidor, não no navegador, e é por isso que SSTI costuma levar a ler segredos e até executar comando no servidor.

nome do usuario {{7*7}} colado no template Hello, {{7*7}}! motor Pinefold avalia saida: avaliado Hello, 49! a conta 7*7 do nome foi avaliada pelo motor, nao mostrada como texto
O nome do usuário é colado dentro do template antes de renderizar: {{7*7}} na entrada vira 49 na saída, o sinal de que o motor avaliou a entrada.

Aparece nestes desafios