Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk menggantikan baris baharu dengan `` dalam templat HTML dengan selamat?

Bagaimana untuk menggantikan baris baharu dengan `` dalam templat HTML dengan selamat?

Linda Hamilton
Linda Hamiltonasal
2024-11-01 07:46:02307semak imbas

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

Menggantikan Baris Baharu dengan
dalam Templat HTML

Dalam templat HTML, memaparkan baris baharu memerlukan sedikit pertimbangan, kerana templat tersebut boleh dilepaskan oleh templat ke
, menyebabkannya muncul sebagai teg HTML literal dan bukannya pemisah baris. Ini menimbulkan masalah apabila memuatkan fail teks yang mengandungi baris baharu dan menghantarnya ke templat HTML.

Penyelesaian yang biasa dicadangkan melibatkan menggantikan aksara baris baharu (n) dengan
dalam rentetan yang dimuatkan. Walau bagaimanapun, pendekatan ini boleh membawa kepada kelemahan keselamatan, kerana ia membenarkan penyerang menyuntik kod berniat jahat melalui aksara " dalam , mengelakkan perlindungan XSS.

Satu alternatif ialah menggunakan templat.HTMLEscape() untuk bersihkan teks sebelum melakukan penggantian baris baharu-ke-

Apabila dilaksanakan, output akan muncul sebagai:

<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>
Ringkasnya, menghantar teks yang telah dibersihkan ke templat HTML dengan berkesan boleh menghalang kelemahan XSS sambil membenarkan paparan baris baharu yang betul.

Atas ialah kandungan terperinci Bagaimana untuk menggantikan baris baharu dengan `` dalam templat HTML dengan selamat?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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