Heim  >  Artikel  >  Backend-Entwicklung  >  Wie kann man in HTML-Vorlagen Zeilenumbrüche sicher durch „“ ersetzen?

Wie kann man in HTML-Vorlagen Zeilenumbrüche sicher durch „“ ersetzen?

Linda Hamilton
Linda HamiltonOriginal
2024-11-01 07:46:02307Durchsuche

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

Neue Zeilen durch
ersetzen in HTML-Vorlagen

In HTML-Vorlagen erfordert die Anzeige von Zeilenumbrüchen einige Überlegungen, da sie von der Vorlage mit
maskiert werden können, wodurch sie als wörtliche HTML-Tags statt als Zeilenumbrüche angezeigt werden. Dies stellt ein Problem dar, wenn eine Textdatei mit Zeilenumbrüchen geladen und an HTML-Vorlagen übergeben wird.

Die häufig vorgeschlagene Lösung besteht darin, das Zeilenumbruchzeichen (n) durch
zu ersetzen. in der geladenen Zeichenfolge. Dieser Ansatz kann jedoch zu Sicherheitslücken führen, da er es Angreifern ermöglicht, Schadcode über das Zeichen „ in einzuschleusen und so den XSS-Schutz zu umgehen.

Eine Alternative besteht darin, template.HTMLEscape() zu verwenden Bereinigen Sie den Text, bevor Sie die Newline-to-
-Ersetzung durchführen. Diese Methode maskiert potenziell gefährliche Zeichen und gewährleistet so die Sicherheit der Vorlagendaten.

Hier ist ein Beispiel, das diese Technik demonstriert:

<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>

Bei der Ausführung sieht die Ausgabe wie folgt aus:

<code class="html"><!DOCTYPE html>
<html>
  <head>
  </head>
  <body>
    <p>first line<br><script>dangerous</script><br>last line</p>
  </body>
</html></code>

Zusammenfassend kann die Übergabe von bereinigtem Text an HTML-Vorlagen XSS-Schwachstellen effektiv verhindern und gleichzeitig die korrekte Anzeige von Zeilenumbrüchen ermöglichen.

Das obige ist der detaillierte Inhalt vonWie kann man in HTML-Vorlagen Zeilenumbrüche sicher durch „“ ersetzen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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