Maison > développement back-end > Golang > Comment remplacer en toute sécurité les nouvelles lignes par `` dans les modèles HTML ?

Comment remplacer en toute sécurité les nouvelles lignes par `` dans les modèles HTML ?

Linda Hamilton
Libérer: 2024-11-01 07:46:02
original
403 Les gens l'ont consulté

How to safely replace newlines with `` in HTML templates?

Remplacement des nouvelles lignes par
dans les modèles HTML

Dans les modèles HTML, l'affichage des nouvelles lignes nécessite une certaine attention, car ils peuvent être échappés par le modèle vers
, les faisant apparaître sous forme de balises HTML littérales au lieu de sauts de ligne. Cela pose un problème lors du chargement d'un fichier texte contenant des nouvelles lignes et de sa transmission à des modèles HTML.

La solution couramment proposée consiste à remplacer le caractère de nouvelle ligne (n) par
dans la chaîne chargée. Cependant, cette approche peut conduire à des failles de sécurité, car elle permet aux attaquants d'injecter du code malveillant via le caractère " dans , échappant ainsi à la protection XSS.

Une alternative consiste à utiliser template.HTMLEscape() pour désinfectez le texte avant d'effectuer la substitution de nouvelle ligne à
. Cette méthode échappe aux caractères potentiellement dangereux, garantissant ainsi la sécurité des données du modèle.

Voici un exemple illustrant cette technique :

<code class="go">import (
    "html/template"
    "os"
    "strings"
)

const page = `<!DOCTYPE html>\n<html><head></head><body><p>{{.}}</p></body></html>`

const text = `first line
<script>dangerous</script>
last line`

func main() {
    t := template.Must(template.New("page").Parse(page))
    safe := template.HTMLEscapeString(text)
    safe = strings.Replace(safe, "\n", "<br>", -1)
    t.Execute(os.Stdout, template.HTML(safe))
}</code>
Copier après la connexion

Une fois exécuté, le résultat apparaîtra comme :

<code class="html"><!DOCTYPE html>
<html>
  <head>
  </head>
  <body>
    <p>first line<br><script>dangerous</script><br>last line</p>
  </body>
</html></code>
Copier après la connexion

En résumé, transmettre du texte nettoyé aux modèles HTML peut prévenir efficacement les vulnérabilités XSS tout en permettant l'affichage correct des nouvelles lignes.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal