Skip to content
KitploitKITPLOIT
FerramentasExploitsBlog
Log in
Enviar
FerramentasExploitsBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
jstachio__jstachio_CVE-2023-33962_1-0-0 — Type-safe mecanismo de templates Mustache para Java com validação de templates em tempo de compilação, vinculação estática de valores e escape extensível para HTML e outros tipos de conteúdo. | Kitploit
Ferramentas/GitHubGitHub/shoucheng3/jstachio__jstachio_cve-2023-33962_1-0-0
Utilitários de Propósito GeralAnálise Estática de Código (SAST)Análise de CódigoSegurança WebAprendizado e Educação
GitHubshoucheng3/jstachio__jstachio_cve-2023-33962_1-0-0

jstachio__jstachio_CVE-2023-33962_1-0-0

Type-safe mecanismo de templates Mustache para Java com validação de templates em tempo de compilação, vinculação estática de valores e escape extensível para HTML e outros tipos de conteúdo.

Ver Repositório
18há 1 anoAinda não revisado

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

Maven Central Github

jstachio

Um mecanismo de templates Mustache para Java com segurança de tipos.

Os templates são compilados em código-fonte Java legível e os vínculos de valores são verificados estaticamente.

Documentação

  • Documentação do JStachio SNAPSHOT mais recente
  • Documentação da versão atual do JStachio

A documentação também está no javadoc.io, mas não é agregada como a acima. O javadoc agregado é a documentação preferida e o restante deste readme serve principalmente para propaganda fins de marketing.

Para versões anteriores:

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

Onde VERSION é a versão que você deseja.

Por que escolher o JStachio

Abordado em why_jstachio_is_better.md.

Recursos

  • Sintaxe Mustache (v 1.3) sem lógica.

    • Suporte completo aos requisitos não opcionais da especificação Mustache v1.3.0 (incluindo espaços em branco)
    • Suporte opcional a herança com algumas ressalvas
    • Suporte opcional a lambdas com algumas diferenças devido à natureza estática
  • Obtenha suporte semelhante ao JEP 430 hoje, mas com ainda mais poder.

  • Templates são compilados em código Java

  • Os vínculos de valores são verificados estaticamente.

  • Métodos, campos e métodos getter podem ser referenciados em templates.

  • Mensagens de erro amigáveis com contexto.

  • Configuração zero. Nenhum plugin ou ajuste é necessário. Tudo é feito com o javac padrão, em qualquer IDE e/ou sistema de build.

  • Templates não HTML são suportados. O conjunto de tipos de conteúdo com escape suportados é extensível.

  • Layouts são suportados por meio da especificação de herança do Mustache.

  • Ponto de extensão de serviço de renderização fallback via ServiceLoader

    • Fallback contínuo para renderização em tempo de execução baseada em reflexão via JMustache e mustache.java (útil para desenvolvimento e alteração de templates em tempo real)
    • Se você não é fã de código gerado, ainda pode usar o JStachio para verificar os tipos dos seus templates mustache.
  • Personalize os tipos permitidos que podem ser emitidos; caso contrário, erro do compilador (para evitar toString em classes que não possuem um toString amigável).

  • Formatador para toString personalizado de variáveis em tempo de execução

  • Adicione interfaces implements extras ao código gerado para complementos semelhantes a traits (@JStacheInterfaces)

  • Suporte poderoso a lambdas

  • Suporte a Map<String, ?>

  • Suporte a Optional<?>

  • Compatível com as extensões de índice de lista do JMustache e do Handlebars (como -first, -last, -index)

  • É de longe o mecanismo de templates Java semelhante a Mustache mais rápido, além de um dos mais rápidos em geral.

  • Zero dependências além do próprio JStachio

  • Uma opção de dependência de tempo de execução absolutamente zero está disponível (ou seja, todo o código necessário é gerado e nem mesmo o jstachio é necessário durante a execução). Não é necessário usar o Maven shade para processadores de anotação e outros projetos com zero dependências. Também é útil para projetos nativos do Graal VM, para uma pegada mínima possível.

  • Suporte de primeira classe para o Spring Framework (ou seja, o próprio projeto fornecerá plugins, em vez de um projeto auxiliar)

Performance

Não é objetivo deste projeto ser o mecanismo de templates Java mais rápido!

(no entanto, atualmente é o mais rápido que conheço quando este readme foi atualizado pela última vez)

Não que performance importe muito com linguagens de template (raramente é o gargalo), mas o JStachio é muito rápido:

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

String Output

Template Comparison

UTF-8 byte Output with extended characters

Template Comparison

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

}

Instalação

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. O jar de anotações (jstachio-annotation) é incluído transitivamente

Gradle

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

Exemplos

user.mustache

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

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

<p>Achievements:</p>

<ul>
{{#array}}
  <li>{{.}}</li>
{{/array}}
</ul>

{{^array}}
<p>No achievements</p>
{{/array}}
Baixar ferramenta