首頁  >  文章  >  後端開發  >  如何安全地處理 HTML 範本中的換行符?

如何安全地處理 HTML 範本中的換行符?

Barbara Streisand
Barbara Streisand原創
2024-11-03 20:59:02620瀏覽

How to Handle Newlines in HTML Templates Safely?

在HTML 範本中轉義換行符

將帶有換行符的文字檔案載入到HTML 範本中時,必須採取預防措施防止跨站點腳本編寫(XSS) 攻擊。理想情況下,n 個字元應替換為
標籤以在瀏覽器中保留換行符。但是,直接替換字元可能會導致模板將它們轉義為 HTML 實體
,無法如預期般渲染。

使用template.HTMLEscape() 的解決方案

為了在維護XSS 保護的同時避免出現問題,請考慮首先使用template.HTMLEscape() 函數來清理文字.此函數在用
取代 n 之前轉義危險字元。

範例:

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

瀏覽器中的輸出:

<code class="html">first line
<script>dangerous</script>
last line</code>
透過在替換之前轉為轉義文本,模板可以正確呈現換行符,同時防止XSS 攻擊。

以上是如何安全地處理 HTML 範本中的換行符?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn