【Smarty】HTMLエスケープ処理を部分的に無効にする

環境:Smarty 3.1、PHP 7.4.4

Smartyテンプレートでクロスサイトスクリプティング(XSS)の対策として、
※画面に出力する文字をエスケープする機能を、部分的にoffにする方法をメモします。

画面上で改行表示を有効にしたい場合や、メール送信に使用するテンプレートを
Smartyで作成する場合に活用出来ます。

※本来htmlのタグとして使用される文字をタグとして無効にして、
不正なアンカーリンクやスクリプトを埋め込まれないようにする事。
(サニタイズともいう)

「SmartyでHTMLエスケープ処理を有効化する設定」


メール本文中の文面など全ての記号文字をエスケープさせない

変数の後ろに、nofilter 

{$variable nofilter}

(注意) 画面に出力するテンプレートはこちらの設定を行わない事


改行表示を(brタグ)有効にする

テキストエリアで入力した値など、改行入力をそのまま表示させたい場合は以下のように記述する。

{{$variables}|nl2br nofilter}

変数を、もう一つ{}構文で囲み、|(パイプ)nl2br nofilterとする。

Follow me!