TacmicCMS Official Site 安全なCMSをあなたに。
SMARTYSET  >  > 第4部:変数の修飾子(Modifiers)徹底解説 > セキュリティ・安全性修飾子(escape, default, nl2br)

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

📖 目次

1 : 第1部:TacmicCMSの構造とテンプレートの役割

1 - 1 : TacmicCMSの全体構造とアーキテクチャ

1 - 2 : モジュール開発とテンプレートの関係

2 : 第2部:Smartyテンプレートの基本構文と作法

2 - 1 : デリミタ(区切り文字)と基本ルール

2 - 2 : リテラルタグ <{literal}> の重要性と活用法

3 : 第3部:変数(Variables)とスコープ完全ガイド

3 - 1 : テンプレート変数の基本とデータ構造の参照法

3 - 2 : Smarty予約変数(スーパーグローバルと環境変数)

3 - 3 : TacmicCMS / ImpressCMS コア提供グローバル変数一覧

3 - 4 : D3モジュール特有の変数と環境変数

4 : 第4部:変数の修飾子(Modifiers)徹底解説

4 - 1 : 文字列操作・整形修飾子

4 - 2 : 日付・数値・フォーマット修飾子

4 - 3 : セキュリティ・安全性修飾子(escape, default, nl2br)

5 : 第5部:制御構文と組み込み関数(Built-in Functions)

5 - 1 : 条件分岐(if, elseif, else)と演算子

5 - 2 : 繰り返し処理(foreach)とループプロパティ

5 - 3 : テンプレート分割とインクルード(include)

6 : 第6部:TacmicCMSカスタム関数・プラグイン

6 - 1 : 変数操作と装飾プラグイン(assign, cycle, counter)

6 - 2 : フォーム生成ヘルパー(html_options, html_radios)

6 - 3 : TacmicCMS専用関数(resized_image)

7 : 第7部:テーマ(theme.html)設計とレスポンシブ化

7 - 1 : theme.html の基本スケルトンと必須要素

7 - 2 : ブロック配置とレイアウト制御(カラムレイアウト)

8 : 第8部:D3モジュールのテンプレート管理とカスタマイズ(ALTSYS連携)

8 - 1 : D3テンプレートの基本構造(3段階の優先順位)

8 - 2 : ALTSYSでのテンプレート複製と編集テクニック

9 : 第9部:PHP 8.5 時代の安全なSmartyコーディング作法

9 - 1 : Undefinedエラー(Warning/Fatal)を出さない書き方

9 - 2 : XSS防止とエスケープポリシー(総まとめ)