在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中文網其他相關文章!