MTでついつい見落としがちになってしまう、グローバルモディファイアでのセキュリティ対策

別にたいしたことはないのですが、MovableTypeを使い慣れてくると、以下のように、EntryTitleであれば、手打ちで記述してしまうことがよくあります。

<$mt:EntryTitle$>

自分ひとりが更新して記事をアップするような場合だと、これでも問題ないですが、不特定多数が投稿できるユーザー参加型のコミュニティサイトをMovableTypeで構築していると問題です。
もし悪意を持った人が入力フォームにスクリプトを埋め込んで投稿すると、悪意のあるスクリプトが埋め込まれたまま公開されてしまうことになります。

それらを防ぐためにMTで用意されているグローバル・モディファイアをつかって、タグを消去して生成することができます。
参考:グローバル・モディファイアリファレンス
例えば、以下のようにremove_htmlを付与すれば、HTMLタグを除去して出力してくれます。

<$mt:entryexcerpt remove_html="1"$>

こういうのを、特にカスタムフィールドを多用するようになって、手打ちしてくると頭からすっぽ抜けて忘れがちになってしまいます。
HTMLタグを自由にユーザーが使えるようにしてしまうと、管理面でも煩雑になってしまいますので忘れずにしておきたいですね。

ただ、このままremove_htmlをつけただけだと、すべてのタグを消去してしまいます。
たとえば、改行タグの<br />も消えてしまいますので、改行だけは反映させたいというときは以下のように記述します。

<$mt:entryexcerpt remove_html="1" convert_breaks="0" nl2br="xhtml"$>

remove_htmlで余分なタグを除去し、
convert_breaksでマークアップをさせないよう明示、
nl2brで空白行をxhml書式の改行コード<br />を変換しています。