Skip to content
KitploitKITPLOIT
OutilsBlog
Log in
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
jstachio__jstachio_CVE-2023-33962_1-0-0 — Moteur de templating Mustache Java type-safe avec validation de templates à la compilation, liaison de valeurs statique et échappement extensible pour HTML et autres types de contenu. | Kitploit
Outils/GitHubGitHub/shoucheng3/jstachio__jstachio_cve-2023-33962_1-0-0
Utilitaires GénérauxAnalyse Statique de Code (SAST)Analyse de CodeSécurité WebApprentissage et Éducation
GitHubshoucheng3/jstachio__jstachio_cve-2023-33962_1-0-0

jstachio__jstachio_CVE-2023-33962_1-0-0

Moteur de templating Mustache Java type-safe avec validation de templates à la compilation, liaison de valeurs statique et échappement extensible pour HTML et autres types de contenu.

Voir le dépôt
19il y a 1 anPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

Maven Central Github

jstachio

Un moteur de templates Java Mustache type-sûr.

Les templates sont compilés en code source Java lisible et les liaisons de valeurs sont vérifiées statiquement.

Documentation

  • Documentation de la dernière SNAPSHOT JStachio
  • Documentation de la version publiée actuelle de JStachio

La documentation est également sur javadoc.io mais n'est pas agrégée comme ci-dessus. La javadoc agrégée est la documentation de référence et le reste de ce readme sert principalement à des fins de propagande marketing.

Pour les versions précédentes :

https://jstach.io/doc/jstachio/VERSION/apidocs

Où VERSION est la version souhaitée.

Pourquoi choisir JStachio

Traité dans why_jstachio_is_better.md.

Fonctionnalités

  • Syntaxe Mustache (v 1.3) sans logique.

    • Prise en charge complète des exigences non optionnelles de la spécification Mustache v1.3.0 (y compris les espaces blancs)
    • Prise en charge optionnelle de l'héritage avec quelques réserves
    • Prise en charge optionnelle des lambdas avec quelques différences dues à la nature statique
  • Profitez dès aujourd'hui d'un support de type JEP 430 mais avec encore plus de puissance.

  • Les templates sont compilés en code Java

  • Les liaisons de valeurs sont vérifiées statiquement.

  • Les méthodes, les champs et les méthodes getter peuvent être référencés dans les templates.

  • Messages d'erreur conviviaux avec contexte.

  • Zéro configuration. Aucun plugin ni ajustement requis. Tout est fait avec le javac standard avec n'importe quel IDE et/ou système de build.

  • Les templates non-HTML sont pris en charge. L'ensemble des types de contenu d'échappement pris en charge est extensible.

  • Les layouts sont pris en charge via la spécification d'héritage de Mustache.

  • Point d'extension du service de rendu de secours via ServiceLoader

    • Repli transparent sur un rendu runtime basé sur la réflexion via JMustache et mustache.java (utile pour le développement et la modification des templates en temps réel)
    • Si vous n'êtes pas fan du code généré, vous pouvez quand même utiliser JStachio pour vérifier les types de vos templates mustache.
  • Personnalisez les types autorisés à être générés en sortie, sinon erreur du compilateur (pour éviter toString sur des classes qui n'ont pas un toString convivial).

  • Formateur pour un toString personnalisé des variables à l'exécution

  • Ajoutez des interfaces implements supplémentaires au code généré pour des extensions de type trait (@JStacheInterfaces)

  • Prise en charge puissante des lambdas

  • Prise en charge de Map<String, ?>

  • Prise en charge de Optional<?>

  • Compatible avec les extensions d'index de liste de JMustache et Handlebars (comme -first, -last, -index)

  • C'est de loin le moteur de templates Java de type Mustache le plus rapide, et également l'un des plus rapides en général.

  • Zéro dépendance en dehors de JStachio lui-même

  • Une option de dépendance runtime absolument nulle est disponible (c'est-à-dire que tout le code nécessaire est généré et même jstachio n'est pas requis à l'exécution). Pas besoin d'utiliser Maven shade pour les processeurs d'annotations et autres projets zéro dépendance. Également utile pour les projets natifs Graal VM afin d'avoir une empreinte minimale.

  • Prise en charge de première classe pour Spring Framework (c'est-à-dire que le projet lui-même fournira des plugins, contrairement à un projet auxiliaire)

Performance

Ce projet n'a pas pour objectif d'être le moteur de templates Java le plus rapide !

(cependant, c'est actuellement le plus rapide que je connaisse au moment de la dernière mise à jour de ce readme)

Non pas que la performance importe beaucoup avec les langages de templating (ce n'est que rarement le goulot d'étranglement) mais JStachio est très rapide :

https://github.com/agentgt/template-benchmark

Sortie String

Template Comparison

Sortie d'octets UTF-8 avec caractères étendus

Template Comparison

Exemple rapide


@JStache(template = """
        {{#people}}
        {{message}} {{name}}! You are {{#ageInfo}}{{age}}{{/ageInfo}} years old!
        {{#-last}}
        That is all for now!
        {{/-last}}
        {{/people}}
        """)
public record HelloWorld(String message, List<Person> people) implements AgeLambdaSupport {
}

public record Person(String name, LocalDate birthday) {
}

public record AgeInfo(long age, String date) {
}

public interface AgeLambdaSupport {

    @JStacheLambda
    default AgeInfo ageInfo(Person person) {
        long age = ChronoUnit.YEARS.between(person.birthday(), LocalDate.now());
        String date = person.birthday().format(DateTimeFormatter.ISO_DATE);
        return new AgeInfo(age, date);
    }

}

@Test
public void testPerson() throws Exception {
    Person rick = new Person("Rick", LocalDate.now().minusYears(70));
    Person morty = new Person("Morty", LocalDate.now().minusYears(14));
    Person beth = new Person("Beth", LocalDate.now().minusYears(35));
    Person jerry = new Person("Jerry", LocalDate.now().minusYears(35));
    String actual = JStachio.render(new HelloWorld("Hello alien", List.of(rick, morty, beth, jerry)));
    String expected = """
            Hello alien Rick! You are 70 years old!
            Hello alien Morty! You are 14 years old!
            Hello alien Beth! You are 35 years old!
            Hello alien Jerry! You are 35 years old!
            That is all for now!
                            """;
    assertEquals(expected, actual);

}

Installation

Maven

<properties>
    <io.jstach.version>0.6.0-SNAPSHOT</io.jstach.version>
</properties>
...
<dependencies>
    <dependency>
        <groupId>io.jstach</groupId>
        <artifactId>jstachio</artifactId>
        <version>${io.jstach.version}</version>
    </dependency>
</dependencies>
...
<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.8.1</version>
            <configuration>
                <source>17</source> <!-- 17 is the minimum -->
                <target>17</target> <!-- 17 is the minimum -->
                <annotationProcessorPaths>
                    <path>
                        <groupId>io.jstach</groupId>
                        <artifactId>jstachio-apt</artifactId>
                        <version>${io.jstach.version}</version>
                    </path>
                    <!-- other annotation processors -->
                </annotationProcessorPaths>
            </configuration>
        </plugin>
    </plugins>
</build>

N.B. Le jar d'annotations (jstachio-annotation) est inclus transitivement

Gradle

dependencies {
 
    implementation 'io.jstach:jstachio:VERSION'
 
    annotationProcessor 'io.jstach:jstachio-apt:VERSION'
}
Télécharger l’outil