4 - 3 : セキュリティ・安全性修飾子(escape, default, nl2br)
XSS脆弱性を防ぐescape、空データフォールバックdefault、改行反映nl2brの安全な併用パターンです。
1. escape(HTML/JavaScriptエスケープ:XSS対策)
外部からの入力値、投稿記事のタイトル、ユーザーのコメントなどを出力する際は、クロスサイトスクリプティング(XSS)を防ぐために必ず escape を通します。
<{* HTML特殊文字(< > & ")を安全にエンコード *}>
<h3><{$comment.title|escape}></h3>
<{* inputタグのvalue属性に安全に埋め込む場合 *}>
<input type="text" name="uname" value="<{$user.uname|escape:'html'}>" />
<{* JavaScript文字列の中に埋め込む場合 *}>
<script>
const userTitle = "<{$user.title|escape:'javascript'}>";
</script>
2. default(未定義・空値時の代替テキスト)
変数が null、空文字、未定義の場合に出力するデフォルト値を指定します。
<{* 説明文が空なら「説明はありません」を表示 *}>
<p><{$item.description|default:"説明はありません"}></p>
<{* ユーザーのアバター画像が未登録なら共通デフォルト画像を表示 *}>
<img src="<{$user.avatar|default:'/images/default_avatar.png'}>" alt="アバター" />
3. パイプ連結(複数修飾子の組み合わせ技)
修飾子は左から順にいくつでもパイプ | で繋げることができます。
<{* 1. HTMLエスケープして安全にした後、2. 改行を <br /> に変換する最強パターン *}>
<div class="body"><{$post.comment|escape|nl2br}></div>
<{* 1. HTMLタグを除去し、2. 80文字で省略し、3. 安全にエスケープ *}>
<p class="summary"><{$article.body|strip_tags|truncate:80:"..."|escape}></p>
Publish
2066 bytes
更新: 2026-11-02 16:15 by admin