Le templating standard de Go est text/template et son frère auto-échappant html/template. Les deux sont délibérément restreints : un template peut référencer des champs et appeler des méthodes sur les données qui lui sont passées, mais il ne peut pas importer de paquets, construire des types arbitraires, ni atteindre le runtime. Cela fait de Go un cas honnête important : injecter de la syntaxe de template produit rarement l'exécution de commande comme le font Jinja2 ou FreeMarker.
Moteurs#
- text/template et html/template : détection, énumération des champs et méthodes, divulgation d'information, et les conditions d'appel de méthode sous lesquelles l'impact escalade.
Références#
- Documentation Go : text/template, html/template
- PortSwigger Web Security Academy: Server-side template injection