Skip to content
KitploitKITPLOIT
उपकरणब्लॉग
जमा करें
उपकरणब्लॉग
जमा करें

हैकिंग, पेनटेस्ट और साइबर सुरक्षा उपकरण आपके सुरक्षा शस्त्रागार के लिए!

Kitploit हैकिंग, साइबर सुरक्षा और पेंटेस्टिंग टूल्स की एक निर्देशिका है। कमजोरियों को खोजने, सिस्टम का विश्लेषण करने, परीक्षण को स्वचालित करने और अपनी सुरक्षा को मजबूत करने के लिए नवीनतम प्रोजेक्ट अपडेट खोजें।

··फ़ीड·संपर्क·गोपनीयता·© 2026 Kitploit

टूल निर्देशिका

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
jstachio__jstachio_CVE-2023-33962_1-0-0 — टाइप-सेफ जावा मस्टैच टेम्पलेटिंग इंजन जिसमें कंपाइल-टाइम टेम्पलेट सत्यापन, स्टैटिक वैल्यू बाइंडिंग और HTML तथा अन्य सामग्री प्रकारों के लिए एक्सटेंसिबल एस्केपिंग शामिल है। | Kitploit
उपकरण/GitHubGitHub/shoucheng3/jstachio__jstachio_cve-2023-33962_1-0-0
सामान्य उपयोगिताएँस्थैतिक कोड विश्लेषण (SAST)कोड विश्लेषणवेब सुरक्षालर्निंग और शिक्षा
GitHubshoucheng3/jstachio__jstachio_cve-2023-33962_1-0-0

jstachio__jstachio_CVE-2023-33962_1-0-0

टाइप-सेफ जावा मस्टैच टेम्पलेटिंग इंजन जिसमें कंपाइल-टाइम टेम्पलेट सत्यापन, स्टैटिक वैल्यू बाइंडिंग और HTML तथा अन्य सामग्री प्रकारों के लिए एक्सटेंसिबल एस्केपिंग शामिल है।

रिपॉजिटरी देखें
311 महीने पहलेअभी तक समीक्षित नहीं

सबसे लोकप्रिय

सभी देखें →

हमारे समुदाय द्वारा सबसे अधिक उपयोग किए जाने वाले उपकरण खोजें।

सभी उपकरण खोजें

हमारे उपकरणों का संग्रह ब्राउज़ करें

सभी उपकरण देखें →
साझा करें

Maven Central Github

jstachio

एक प्रकार-सुरक्षित जावा मस्टैच टेम्पलेटिंग इंजन।

टेम्पलेट्स को पढ़ने योग्य जावा स्रोत कोड में संकलित किया जाता है और मान बाइंडिंग्स स्थिर रूप से जाँची जाती हैं।

दस्तावेज़

  • नवीनतम SNAPSHOT JStachio दस्तावेज़
  • वर्तमान जारी JStachio दस्तावेज़

दस्तावेज़ javadoc.io पर भी है लेकिन ऊपर के समान एकत्रित नहीं है। एकत्रित javadoc पसंदीदा दस्तावेज़ है और इस readme का शेष भाग मुख्य रूप से प्रचार विपणन उद्देश्यों के लिए है।

पिछले रिलीज़ के लिए:

root@kitploit:~
https://jstach.io/doc/jstachio/VERSION/apidocs

जहाँ VERSION आपकी इच्छित संस्करण है।

JStachio क्यों चुनें

इसमें शामिल है why_jstachio_is_better.md।

विशेषताएँ

  • तर्कहीन Mustache (v 1.3) सिंटैक्स।

    • गैर-वैकल्पिक Mustache स्पेक v1.3.0 आवश्यकताओं का पूर्ण समर्थन (व्हाइटस्पेस सहित)
    • कुछ चेतावनियों के साथ वैकल्पिक इनहेरिटेंस समर्थन
    • स्थिर प्रकृति के कारण कुछ अंतरों के साथ वैकल्पिक लैम्ब्डा समर्थन
  • आज JEP 430 जैसा समर्थन प्राप्त करें लेकिन और भी अधिक शक्ति के साथ।

  • टेम्पलेट्स को जावा कोड में संकलित किया जाता है

  • मान बाइंडिंग्स स्थिर रूप से जाँची जाती हैं।

  • विधियाँ, फ़ील्ड्स और गेटर-विधियाँ टेम्पलेट्स में संदर्भित की जा सकती हैं।

  • संदर्भ के साथ मैत्रीपूर्ण त्रुटि संदेश।

  • शून्य कॉन्फ़िगरेशन। किसी प्लगइन या ट्वीक की आवश्यकता नहीं है। सब कुछ किसी भी IDE और/या बिल्ड-सिस्टम के साथ मानक javac के साथ किया जाता है।

  • गैर-HTML टेम्पलेट्स समर्थित हैं। समर्थित एस्केपिंग सामग्री प्रकारों का सेट विस्तार योग्य है।

  • Mustache इनहेरिटेंस स्पेक के माध्यम से लेआउट समर्थित हैं।

  • ServiceLoader के माध्यम से फ़ॉलबैक रेंडर सेवा विस्तार बिंदु

    • JMustache और mustache.java के माध्यम से रिफ्लेक्शन-आधारित रनटाइम रेंडरिंग पर सहज फ़ॉलबैक (विकास और वास्तविक समय में टेम्पलेट बदलने के लिए उपयोगी)
    • यदि आप जनरेटेड कोड के प्रशंसक नहीं हैं तो भी आप अपने मस्टैच टेम्पलेट्स की टाइप जांच के लिए JStachio का उपयोग कर सकते हैं।
  • अनुमत प्रकारों को अनुकूलित करें जिन्हें आउटपुट किया जा सकता है अन्यथा कंपाइलर त्रुटि (उन क्लासेस पर toString से बचने के लिए जिनके पास मैत्रीपूर्ण toString नहीं है)।

  • रनटाइम पर चर के कस्टम toString के लिए फ़ॉर्मेटर

  • ट्रेट जैसे ऐड-ऑन के लिए जनरेटेड कोड में अतिरिक्त implements इंटरफ़ेस जोड़ें (@JStacheInterfaces)

  • शक्तिशाली लैम्ब्डा समर्थन

  • Map<String, ?> समर्थन

  • Optional<?> समर्थन

  • JMustache और Handlebars सूची सूचकांक एक्सटेंशन के साथ संगत (जैसे -first, -last, -index)

  • यह अब तक का सबसे तेज़ जावा Mustache-जैसा टेम्पलेट इंजन है और सामान्य रूप से सबसे तेज़ में से एक है।

  • JStachio के अलावा शून्य निर्भरताएँ

  • एक बिल्कुल शून्य रनटाइम निर्भरता विकल्प उपलब्ध है (जैसे सभी आवश्यक कोड उत्पन्न होता है और रनटाइम के दौरान jstachio की भी आवश्यकता नहीं होती)। एनोटेशन प्रोसेसर और अन्य शून्य निर्भरता प्रोजेक्ट्स के लिए Maven shade का उपयोग करने की आवश्यकता नहीं है। Graal VM नेटिव प्रोजेक्ट्स के लिए भी उपयोगी है जहाँ फ़ुटप्रिंट यथासंभव न्यूनतम हो।

  • Spring Framework के लिए प्रथम श्रेणी का समर्थन (जैसे स्वयं प्रोजेक्ट प्लगइन्स प्रदान करेगा, न कि एक सहायक प्रोजेक्ट)

प्रदर्शन

यह इस प्रोजेक्ट का लक्ष्य नहीं है कि वह सबसे तेज़ जावा टेम्पलेटिंग इंजन हो!

(हालाँकि जब यह readme अंतिम बार अपडेट किया गया था तब यह मेरी जानकारी में सबसे तेज़ है)

ऐसा नहीं है कि टेम्पलेटिंग भाषाओं के साथ प्रदर्शन बहुत मायने रखता है (यह शायद ही कभी अड़चन होता है) लेकिन JStachio बहुत तेज़ है:

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

स्ट्रिंग आउटपुट

Template Comparison

विस्तारित वर्णों के साथ UTF-8 बाइट आउटपुट

Template Comparison

त्वरित उदाहरण

root@kitploit:~

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

}

स्थापना

Maven

root@kitploit:~
<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>

नोट: एनोटेशन jar (jstachio-annotation) परोक्ष रूप से खिंच जाता है

Gradle

root@kitploit:~
dependencies {
 
    implementation 'io.jstach:jstachio:VERSION'
 
    annotationProcessor 'io.jstach:jstachio-apt:VERSION'
}

उदाहरण

user.mustache

root@kitploit:~
{{#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}}

<p>Items:</p>

<ol>
{{#list1}}
  <li>{{value}}</li>
{{/list1}}
</ol>

User.java

निम्नलिखित क्लास का उपयोग उपरोक्त टेम्पलेट में भरने के लिए वास्तविक डेटा प्रदान करने के लिए किया जा सकता है।

root@kitploit:~
@JStache(
    // points to src/main/resources/user.mustache file
    path = "user.mustache",
   
    // or alternatively you can inline the template
    template = "", 

    )
public record User(String name, int age, String[] array, List<Item<String>> list) {

   public static class Item<T> {
        private final T value;
        public Item(T value) {
            this.value = value;
        }
        T value() {
            return value;
        }
    }
}

रेंडरिंग

उपरोक्त कोड के साथ नई क्लास UserRenderer यांत्रिक रूप से उत्पन्न होगी। इस क्लास का उपयोग वास्तविक डेटा से भरे टेम्पलेट को रेंडर करने के लिए किया जा सकता है। टेम्पलेट रेंडर करने के लिए निम्नलिखित कोड का उपयोग किया जा सकता है:

root@kitploit:~
class Main {
    public static void main(String[] args) throws IOException {
        User user = new User("John Doe", 21, new String[] {"Knowns nothing"}, list);
        StringBuilder appendable = new StringBuilder();
        JStachio.render(user, appendable);
    }
}

इस कोड को चलाने का परिणाम होगा

root@kitploit:~
<p>Name: John Doe, Name Length is 8</p>

<p>Age: 21</p>

<p>Achievements:</p>

<ul>
  <li>Knowns nothing</li>
</ul>

<p>Items:</p>

<ol>
  <li>helmet</li>
  <li>shower</li>
</ol>

गैर-मौजूद फ़ील्ड्स, या गैर-रेंडर करने योग्य प्रकार वाले फ़ील्ड्स का संदर्भ देने से संकलन-समय की त्रुटियाँ होती हैं। ये त्रुटियाँ आपके प्रोजेक्ट के संकलन-समय पर जावा स्रोतों में अन्य संभावित त्रुटियों के साथ रिपोर्ट की जाती हैं।

root@kitploit:~
target/classes/user.mustache:5: error: Field not found in current context: 'age1'
  <p>Age: {{  age1  }} ({{birthdate}}) </p>
                  ^
  symbol: mustache directive
  location: mustache template
root@kitploit:~
target/classes/user.mustache:5: error: Unable to render field: type error: Can't render data.birthdate expression of java.util.Date type
  <p>Age: {{  age  }} ({{birthdate}}) </p>
                                    ^
  symbol: mustache directive
  location: mustache template

अधिक उदाहरणों के लिए test/examples प्रोजेक्ट देखें।

जावा-विशिष्ट एक्सटेंशन

एनम मिलान समर्थन

मूलतः, एनम में बूलियन कुंजियाँ होती हैं जो एनम का नाम (Enum.name()) होती हैं जिन्हें सशर्त अनुभागों के रूप में उपयोग किया जा सकता है।

मान लें कि light एक एनम है जैसे:

root@kitploit:~
public enum Light {
  RED,
  GREEN,
  YELLOW
}

आप पैटर्न मैच की तरह एनम पर सशर्त रूप से चयन कर सकते हैं:

root@kitploit:~
{{#light.RED}}
STOP
{{/light.RED}}
{{#light.GREEN}}
GO
{{/light.GREEN}}
{{#light.YELLOW}}
Proceeed with caution
{{/light.YELLOW}}

सूचकांक समर्थन

JStachio iterable अनुभागों के लिए हैंडलबार्स और JMustache दोनों सूचकांक कुंजियों के साथ संगत है।

  • -first एक बूलियन है जो सत्य है जब आप पहले आइटम पर हैं
  • -last एक बूलियन है जो सत्य है जब आप iterable में अंतिम आइटम पर हैं
  • -index एक-आधारित सूचकांक है। पहला आइटम 1 होगा न कि 0

लैम्ब्डा समर्थन

JStachio JMustache के समान तरीके से लैम्ब्डा अनुभाग कॉल का समर्थन करता है। बस अपनी विधियों को @JStacheLambda से टैग करें और लौटाए गए मॉडल का उपयोग लैम्ब्डा अनुभाग की सामग्री को रेंडर करने के लिए किया जाएगा। संदर्भ स्टैक के शीर्ष को लैम्ब्डा में पारित किया जा सकता है।

JStachio, स्पेक के विपरीत, गतिशील टेम्पलेट लौटाने का समर्थन नहीं करता है जो फिर संदर्भ स्टैक के विरुद्ध रेंडर होते हैं। हालाँकि, कॉल करने वाले द्वारा लैम्ब्डा अनुभाग की सामग्री को बदलकर गतिशील आउटपुट प्राप्त किया जा सकता है क्योंकि अनुभाग की सामग्री एक इनलाइन टेम्पलेट के रूप में कार्य करती है।

डिज़ाइन

विचार mustache की तर्कहीन दर्शन को जावा की एकल-जिम्मेदारी और स्थिर-टाइपिंग के साथ मिलाकर एक टेम्पलेटिंग इंजन बनाना है। सिंटैक्स और डेटा-बाइंडिंग की पूर्ण संकलन-समय जाँच मुख्य आवश्यकता है।

वर्तमान में टेम्पलेट्स के लिए जावा-कोड उत्पन्न किया जाता है। उत्पन्न जावा-कोड को कभी भी संकलित होने में विफल नहीं होना चाहिए। यदि किसी टेम्पलेट से मान्य जावा-कोड उत्पन्न करना असंभव है, तो टेम्पलेट फ़ाइल की ओर इशारा करते हुए मैत्रीपूर्ण संकलन-समय त्रुटि उत्पन्न की जानी चाहिए। उपयोगकर्ताओं को कभी भी उत्पन्न जावा-कोड से अवगत नहीं कराया जाना चाहिए।

मूल mustache रेंडरिंग संदर्भ को परिभाषित करने के लिए Javascript-ऑब्जेक्ट का उपयोग करता है। चयनित Javascript-ऑब्जेक्ट के फ़ील्ड टेम्पलेट फ़ील्ड के साथ बंधे होते हैं।

स्थिर mustache रेंडरिंग संदर्भ को परिभाषित करने के लिए Java-ऑब्जेक्ट का उपयोग करता है। टेम्पलेट फ़ील्ड का बाइंडिंग संकलन-समय पर परिभाषित और जाँचा जाता है। गायब फ़ील्ड संकलन-समय त्रुटि हैं।

लाइसेंस

JStachio BSD 3-क्लॉज लाइसेंस के अंतर्गत है।

टूल डाउनलोड करें