Rumah > pembangunan bahagian belakang > Golang > Bagaimana Mengendalikan Baris Baharu dalam Templat HTML dengan Selamat?

Bagaimana Mengendalikan Baris Baharu dalam Templat HTML dengan Selamat?

Barbara Streisand
Lepaskan: 2024-11-03 20:59:02
asal
784 orang telah melayarinya

How to Handle Newlines in HTML Templates Safely?

Melepaskan Baris Baharu dalam Templat HTML

Apabila memuatkan fail teks dengan baris baharu ke dalam templat HTML, adalah penting untuk mengambil langkah berjaga-jaga terhadap skrip merentas tapak (XSS) serangan. Sebaik-baiknya, n aksara hendaklah digantikan dengan
tag untuk mengekalkan pemisah baris dalam penyemak imbas. Walau bagaimanapun, menggantikan aksara secara langsung boleh menyebabkan templat melarikan diri daripadanya sebagai entiti HTML
, yang tidak akan dipaparkan seperti yang dimaksudkan.

Penyelesaian Menggunakan templat.HTMLEscape()

Untuk mengelakkan isu semasa mengekalkan perlindungan XSS, pertimbangkan untuk menggunakan fungsi templat.HTMLEscape() dahulu untuk membersihkan teks. Fungsi ini melepaskan aksara berbahaya sebelum menggantikan n dengan
.

Contoh:

<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>
Salin selepas log masuk

Output dalam Penyemak Imbas:

<code class="html">first line
<script>dangerous</script>
last line</code>
Salin selepas log masuk

Dengan melepaskan teks sebelum penggantian, templat memaparkan baris dengan betul pecah sambil melindungi daripada serangan XSS.

Atas ialah kandungan terperinci Bagaimana Mengendalikan Baris Baharu dalam Templat HTML dengan Selamat?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan