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

Comment gérer les nouvelles lignes dans les modèles HTML en toute sécurité ?

Barbara Streisand
Libérer: 2024-11-03 20:59:02
original
738 Les gens l'ont consulté

How to Handle Newlines in HTML Templates Safely?

Échapper aux nouvelles lignes dans les modèles HTML

Lors du chargement d'un fichier texte avec des nouvelles lignes dans des modèles HTML, il est essentiel de prendre des précautions contre les scripts intersites (XSS). Idéalement, n caractères devraient être remplacés par
balises pour conserver les sauts de ligne dans le navigateur. Cependant, la substitution directe des caractères peut entraîner l'échappement du modèle en tant qu'entités HTML
, qui ne s'afficheront pas comme prévu.

Solution utilisant template.HTMLEscape()

Pour éviter le problème tout en conservant la protection XSS, pensez à utiliser d'abord la fonction template.HTMLEscape() pour nettoyer le texte. Cette fonction échappe aux caractères dangereux avant de remplacer n par
.

Exemple :

<code class="go">package main

import (
    "html/template"
    "os"
    "strings"
)

const page = `<!DOCTYPE html>
<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)) // template.HTML encapsulates a known safe HTML document fragment.
}</code>
Copier après la connexion

Sortie dans le navigateur :

<code class="html">first line
<script>dangerous</script>
last line</code>
Copier après la connexion

En échappant le texte avant la substitution, le modèle restitue correctement les sauts de ligne tout en protégeant contre les attaques XSS.

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