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>
Ausgabe im Browser:
<code class="html">first line <script>dangerous</script> last line</code>
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!