Heim > Backend-Entwicklung > Golang > Wie gehe ich sicher mit Zeilenumbrüchen in HTML-Vorlagen um?

Wie gehe ich sicher mit Zeilenumbrüchen in HTML-Vorlagen um?

Barbara Streisand
Freigeben: 2024-11-03 20:59:02
Original
734 Leute haben es durchsucht

How to Handle Newlines in HTML Templates Safely?

Neue Zeilen in HTML-Vorlagen maskieren

Beim Laden einer Textdatei mit Zeilenumbrüchen in HTML-Vorlagen ist es wichtig, Vorsichtsmaßnahmen gegen Cross-Site-Scripting zu treffen (XSS)-Angriffe. Idealerweise sollten n Zeichen durch
ersetzt werden. -Tags, um Zeilenumbrüche im Browser beizubehalten. Das direkte Ersetzen der Zeichen kann jedoch dazu führen, dass die Vorlage sie als HTML-Entitäten
maskiert, die nicht wie beabsichtigt gerendert werden.

Lösung mit template.HTMLEscape()

Um das Problem zu vermeiden und gleichzeitig den XSS-Schutz aufrechtzuerhalten, sollten Sie zunächst die Funktion template.HTMLEscape() verwenden, um den Text zu bereinigen. Diese Funktion maskiert gefährliche Zeichen, bevor sie n durch
ersetzt.

Beispiel:

<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>
Nach dem Login kopieren

Ausgabe im Browser:

<code class="html">first line
<script>dangerous</script>
last line</code>
Nach dem Login kopieren

Durch das Escapen des Textes vor der Ersetzung stellt die Vorlage Zeilenumbrüche korrekt dar und schützt gleichzeitig vor XSS-Angriffen.

Das obige ist der detaillierte Inhalt vonWie gehe ich sicher mit Zeilenumbrüchen in HTML-Vorlagen um?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage