HTML テンプレートで改行を表示するには、いくつかの考慮が必要です。テンプレートによって改行が
にエスケープされ、改行ではなくリテラルの HTML タグとして表示される可能性があるためです。これは、改行を含むテキスト ファイルをロードして HTML テンプレートに渡すときに問題を引き起こします。
一般的に提案されている解決策には、改行文字 (n) を
に置き換えることが含まれます。ロードされた文字列内。ただし、このアプローチでは、攻撃者が の " 文字を通じて悪意のあるコードを挿入し、XSS 保護を回避できるため、セキュリティ上の脆弱性が発生する可能性があります。
1 つの代替案は、template.HTMLEscape() を利用して、 newline-to-
置換を実行する前にテキストをサニタイズします。このメソッドは潜在的に危険な文字をエスケープし、テンプレート データの安全性を確保します。この手法を示す例は次のとおりです。<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>
実行すると、出力は次のように表示されます:
<code class="html"><!DOCTYPE html> <html> <head> </head> <body> <p>first line<br><script>dangerous</script><br>last line</p> </body> </html></code>
以上がHTML テンプレートで改行を `` に安全に置き換えるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。