Skip to content
KitploitKITPLOIT
HerramientasExploitsBlog
Log in
Enviar
HerramientasExploitsBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
jstachio__jstachio_CVE-2023-33962_1-0-0 — Motor de plantillas Mustache para Java con seguridad de tipos, validación de plantillas en tiempo de compilación, enlace de valores estático y escape extensible para HTML y otros tipos de contenido. | Kitploit
Herramientas/GitHubGitHub/shoucheng3/jstachio__jstachio_cve-2023-33962_1-0-0
Utilidades de Propósito GeneralAnálisis Estático de Código (SAST)Análisis de CódigoSeguridad WebAprendizaje y Educación
GitHubshoucheng3/jstachio__jstachio_cve-2023-33962_1-0-0

jstachio__jstachio_CVE-2023-33962_1-0-0

Motor de plantillas Mustache para Java con seguridad de tipos, validación de plantillas en tiempo de compilación, enlace de valores estático y escape extensible para HTML y otros tipos de contenido.

Ver Repositorio
19hace 1 añoAún no revisado

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

Maven Central Github

jstachio

Un motor de plantillas Mustache para Java con seguridad de tipos.

Las plantillas se compilan en código fuente Java legible y los enlaces de valores se verifican estáticamente.

Documentación

  • Última documentación SNAPSHOT de JStachio
  • Documentación actual publicada de JStachio

La documentación también está en javadoc.io pero no está agregada como la anterior. El javadoc agregado es la documentación preferida y el resto de este readme es principalmente para fines de propaganda marketing.

Para versiones anteriores:

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

Donde VERSION es la versión que desees.

Por qué elegir JStachio

Cubierto en why_jstachio_is_better.md.

Características

  • Sintaxis Mustache sin lógica (v 1.3) de Mustache.

    • Soporte completo de los requisitos no opcionales de la especificación Mustache v1.3.0 (incluyendo espacios en blanco)
    • Soporte opcional de herencia con algunas advertencias
    • Soporte opcional de lambdas con algunas diferencias debido a la naturaleza estática
  • Obtén soporte similar a JEP 430 hoy pero con aún más poder.

  • Las plantillas se compilan en código Java

  • Los enlaces de valores se verifican estáticamente.

  • Métodos, campos y métodos getter pueden referenciarse en las plantillas.

  • Mensajes de error amigables con contexto.

  • Configuración cero. No se requieren plugins ni ajustes. Todo se hace con javac estándar con cualquier IDE y/o sistema de construcción.

  • Se admiten plantillas no HTML. El conjunto de tipos de contenido de escape admitidos es extensible.

  • Se admiten diseños mediante la especificación de herencia de Mustache.

  • Punto de extensión del servicio de renderizado de respaldo mediante ServiceLoader

    • Respaldo sin problemas al renderizado en tiempo de ejecución basado en reflexión mediante JMustache y mustache.java (útil para desarrollo y cambio de plantillas en tiempo real)
    • Si no eres fanático del código generado, aún puedes usar JStachio para verificar tipos de tus plantillas mustache.
  • Personaliza los tipos permitidos que se pueden generar de lo contrario error del compilador (para evitar toString en clases que no tienen un toString amigable).

  • Formateador para toString personalizado de variables en tiempo de ejecución

  • Añade interfaces implements adicionales al código generado para complementos tipo trait (@JStacheInterfaces)

  • Soporte potente de Lambdas

  • Soporte de Map<String, ?>

  • Soporte de Optional<?>

  • Compatible con las extensiones de índice de lista de JMustache y Handlebars (como -first, -last, -index)

  • Es, por mucho, el motor de plantillas Mustache-like más rápido de Java, así como uno de los más rápidos en general.

  • Cero dependencias aparte de JStachio mismo

  • Una opción de dependencia de tiempo de ejecución absolutamente cero está disponible (es decir, todo el código necesario se genera y ni siquiera se necesita jstachio durante el tiempo de ejecución). No es necesario usar Maven shade para procesadores de anotaciones y otros proyectos con cero dependencias. También útil para proyectos nativos de Graal VM para la huella más pequeña posible.

  • Soporte de primera clase para Spring Framework (es decir, el proyecto mismo proporcionará plugins en lugar de un proyecto auxiliar)

Rendimiento

¡No es un objetivo de este proyecto ser el motor de plantillas Java más rápido!

(sin embargo, actualmente es el más rápido que conozco cuando este readme fue actualizado por última vez)

No es que el rendimiento importe mucho con los lenguajes de plantillas (rara vez es el cuello de botella) pero JStachio es muy rápido:

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

Salida de cadena

Comparación de plantillas

Salida de bytes UTF-8 con caracteres extendidos

Comparación de plantillas

Ejemplo rápido


@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);

}

Instalación

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 es el mínimo -->
                <target>17</target> <!-- 17 es el mínimo -->
                <annotationProcessorPaths>
                    <path>
                        <groupId>io.jstach</groupId>
                        <artifactId>jstachio-apt</artifactId>
                        <version>${io.jstach.version}</version>
                    </path>
                    <!-- otros procesadores de anotaciones -->
                </annotationProcessorPaths>
            </configuration>
        </plugin>
    </plugins>
</build>

N.B. El jar de anotaciones (jstachio-annotation) se incluye transitivamente

Gradle

dependencies {
 
    implementation 'io.jstach:jstachio:VERSION'
 
    annotationProcessor 'io.jstach:jstachio-apt:VERSION'
}

Ejemplos

user.mustache

{{#name}}
<p>Name: {{.}}, Name Length is {{length}}</p>
{{/name}}

<p>Age: {{  age  }}</p>
Descargar herramienta