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

Linda Hamilton
Lepaskan: 2024-11-01 07:46:02
asal
322 orang telah melayarinya

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

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
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!