recherche
Maisondéveloppement back-endGolangPourquoi mon modèle HTML Go affiche-t-il « ZgotmplZ » ?

Why Does My Go HTML Template Output

Comprendre "ZgotmplZ" dans les modèles Go HTML

Lorsque vous travaillez avec des modèles Go HTML, vous pouvez rencontrer la chaîne énigmatique "ZgotmplZ" en sortie . Cette valeur particulière a une signification spécifique qui exige de l'attention.

Pourquoi ZgotmplZ apparaît

"ZgotmplZ" apparaît lorsqu'un contenu potentiellement dangereux entre dans un contexte CSS ou URL pendant l'exécution. Cela se produit lorsque le HTML est intégré directement dans les attributs CSS ou URL, ce qui peut introduire des failles de sécurité. Pour se protéger contre ces risques, le moteur de modèles insère "ZgotmplZ" comme espace réservé, empêchant ainsi l'exécution du contenu dangereux.

Un exemple d'exemple

Considérez le modèle suivant code :

func printSelected(s string) string {
    if s == "test" {
        return `selected="selected"`
    }
    return ""
}

func main() {
    funcMap := template.FuncMap{
        "printSelected": printSelected,
        "safe": func(s string) template.HTML {
            return template.HTML(s)
        },
    }
    template.Must(template.New("Template").Funcs(funcMap).Parse(`
        <option printselected safe>test</option>
    `)).Execute(os.Stdout, nil)

}

Une fois exécuté, ce modèle produit le sortie :

<option zgotmplz>test</option>

Sécurisation de la sortie du modèle

Pour garantir la sécurité de la sortie de votre modèle, vous pouvez utiliser "funcMap" pour implémenter les paramètres "attr" et "safe "fonctions :

func attr(s string) template.HTMLAttr {
    return template.HTMLAttr(s)
}

func main() {
    funcMap := template.FuncMap{
        "attr": attr,
        "safe": func(s string) template.HTML {
            return template.HTML(s)
        },
    }

    template.Must(template.New("Template").Funcs(funcMap).Parse(`
        <option attr>test</option>
        {{.html | safe}}
    `)).Execute(os.Stdout, map[string]string{
        "attr": `selected="selected"`,
        "html": `<option selected>option</option>`,
    })
}

Ce code modifié entraîne ce qui suit sortie :

<option selected>test</option>
<option selected>option</option>

Conclusion

En comprenant la signification de "ZgotmplZ" et en implémentant les fonctions "attr" et "safe", vous pouvez vous assurer que votre Go Les modèles HTML produisent une sortie sûre et sécurisée, minimisant le risque de vulnérabilités et préservant l'intégrité de vos applications.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Comment utilisez-vous les & quot; Strings & quot; Emballage pour manipuler les cordes en Go?Comment utilisez-vous les & quot; Strings & quot; Emballage pour manipuler les cordes en Go?Apr 30, 2025 pm 02:34 PM

L'article discute de l'utilisation du package "Strings" de Go pour la manipulation des chaînes, détaillant les fonctions communes et les meilleures pratiques pour améliorer l'efficacité et gérer efficacement Unicode.

Comment utilisez-vous le & quot; crypto & quot; Package pour effectuer des opérations cryptographiques en Go?Comment utilisez-vous le & quot; crypto & quot; Package pour effectuer des opérations cryptographiques en Go?Apr 30, 2025 pm 02:33 PM

L'article détaille en utilisant le package "crypto" de Go pour les opérations cryptographiques, discutant de la génération de clés, de la gestion et des meilleures pratiques pour la mise en œuvre sécurisée. Counomage de Character: 159

Comment utilisez-vous le 'temps' Emballage pour gérer les dates et les temps en Go?Comment utilisez-vous le 'temps' Emballage pour gérer les dates et les temps en Go?Apr 30, 2025 pm 02:32 PM

L'article détaille l'utilisation du package "Time" de Go pour gérer les dates, les heures et les fuseaux horaires, y compris l'heure actuelle, la création de temps spécifiques, l'analyse des chaînes et la mesure du temps écoulé.

Comment utilisez-vous le & quot; réflexion & quot; Package pour inspecter le type et la valeur d'une variable en Go?Comment utilisez-vous le & quot; réflexion & quot; Package pour inspecter le type et la valeur d'une variable en Go?Apr 30, 2025 pm 02:29 PM

L'article discute de l'utilisation du package "Reflect" de Go pour l'inspection et la modification des variables, mettant en évidence les méthodes et les considérations de performances.

Comment utilisez-vous le & quot; sync / atomic & quot; Package pour effectuer des opérations atomiques en Go?Comment utilisez-vous le & quot; sync / atomic & quot; Package pour effectuer des opérations atomiques en Go?Apr 30, 2025 pm 02:26 PM

L'article discute de l'utilisation du package "Sync / Atomic" de Go pour les opérations atomiques en programmation simultanée, détaillant ses avantages comme la prévention des conditions de course et l'amélioration des performances.

Quelle est la syntaxe pour créer et utiliser une conversion de type dans GO?Quelle est la syntaxe pour créer et utiliser une conversion de type dans GO?Apr 30, 2025 pm 02:25 PM

L'article traite des conversions de type dans GO, notamment la syntaxe, les pratiques de conversion sûres, les pièges communs et les ressources d'apprentissage. Il met l'accent sur la conversion de type explicite et la gestion des erreurs. [159 caractères]

Quelle est la syntaxe pour créer et utiliser une assertion de type dans GO?Quelle est la syntaxe pour créer et utiliser une assertion de type dans GO?Apr 30, 2025 pm 02:24 PM

L'article traite des assertions de type dans GO, en se concentrant sur la syntaxe, des erreurs potentielles comme les paniques et les types incorrects, les méthodes de manipulation sûres et les implications de performance.

Comment utilisez-vous le & quot; select & quot; déclaration dans Go?Comment utilisez-vous le & quot; select & quot; déclaration dans Go?Apr 30, 2025 pm 02:23 PM

L'article explique l'utilisation de l'instruction "SELECT" dans GO pour gérer plusieurs opérations de canaux, ses différences par rapport à l'instruction "Switch" et des cas d'utilisation courants tels que la gestion de plusieurs canaux, la mise en œuvre des délais d'expiration,

See all articles

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Version crackée d'EditPlus en chinois

Version crackée d'EditPlus en chinois

Petite taille, coloration syntaxique, ne prend pas en charge la fonction d'invite de code

Navigateur d'examen sécurisé

Navigateur d'examen sécurisé

Safe Exam Browser est un environnement de navigation sécurisé permettant de passer des examens en ligne en toute sécurité. Ce logiciel transforme n'importe quel ordinateur en poste de travail sécurisé. Il contrôle l'accès à n'importe quel utilitaire et empêche les étudiants d'utiliser des ressources non autorisées.

Version Mac de WebStorm

Version Mac de WebStorm

Outils de développement JavaScript utiles

PhpStorm version Mac

PhpStorm version Mac

Le dernier (2018.2.1) outil de développement intégré PHP professionnel