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