例えば、ブログのコメントにHTMLの利用を許可している場合、悪意のあるHTMLやJavaScript、PHPなどをコメント欄から送信し、サーバーでコードを実行させようと考えるかもしれません。これは大変危険な問題です。このようなサイトの脆弱性を狙ったコードは「クロスサイトスクリプティング(XSS)」と呼ばれることがあります。このような問題からサイトを保護するため、Movable Type Enterpriseは、訪問者が投稿したすべてのデータ(コメントのデータとトラックバックのデータ)をサニタイズ(無害化)します。
サニタイズ・プロセスでは、一部のHTMLタグだけが機能するようにし、そのほかのタグ、実行命令およびスクリプティング命令(PHP、JSP、JavaScript)はすべて取り除きます。初期設定で許可されているHTMLのタグとアトリビュート(属性)は「a href」「b」「br」「p」「strong」「em」「ul」「li」「blockquote」です。この設定は、「mt-config.cgi」ファイルの「GlobalSanitizeSpec」で変更できます。また、ブログごとに変更したい場合は、ブログの設定で上書きできます。サニタイズ・プロセスの別の機能として、テキストがサニタイズされたあと、開いたままのタグに終了タグを補う機能があります。例えば、あなたのサイトの訪問者が<b>タグを開き、閉じるのを忘れた場合は、サニタイズ・プロセスが</b>タグを追加します。
注意 以下の説明は、ブログの設定にある[コメントでのHTMLの利用を許可する]オプションを有効にしている場合だけに該当します。
初期設定でサニタイズ機能は、以下のタグに対し自動的に有効になります。
これらのタグをセキュリティ上安全にするため、テンプレートを修正する必要はありません。これらのタグのサニタイズを無効にする場合は、以下のように<sanitize>アトリビュートに「0」を指定します。
<$MTPingTitle sanitize="0"$>
この領域に精通していない方には、初期設定のままにしておくことをお勧めします。
初期設定のサニタイズ仕様を上書きするには、まずその理由を明確にし、上書きが本当に必要であるかどうかを確かめてください。さらに、ここに説明するサニタイズ仕様のフォーマットを確実に理解してから上書きしてください。
サニタイズ仕様はHTMLタグ名がカンマ(,)で区切られたものです。各タグに対しあなたが許可するアトリビュートをスペースで区切り列挙します。以下に例をあげます。
例:<a>タグとそのhrefアトリビュート、そして<b>タグを許可したものです。a href,bこれは<p>タグと<br>タグを許可したものです。p,br/
上の例にある「br/」タグの「/」に注目してください。これがないと、サニタイズ・プロセス時に、テキストを解析するパーサーが、<br>タグだけを見つけた場合、テキストの最後に終了タグを付ける必要があると判断します。しかし、タグ名のあとに「/」を加えておけば、パーサーはそのタグには終了タグが必要ないと判断します。 許可するタグのアトリビュートは1つ1つ指定する必要があります。指定しないと、アトリビュートはどれも許可されない状態になります。例えば、<a>タグを許可した場合は、<href>アトリビュートも許可するのが賢明です。そのようにしておかないと、
<a href="http://www.example.com/">
というHTMLコードは、上書きしたサニタイズ機能によって、以下のようになってしまいます。
<a>
これではハイパーリンクが機能しません。
複数のHTMLタグに共通する1つのアトリビュートを許可する場合は、タグ名に「*」を用いたあと、そのアトリビュート名を記述します。以下に例をあげます。
br/,p,blockquote,* style
この設定は、以下のHTMLコードを許可します。
<br style="..." /> <p style="..." /> <blockquote style="...">...</blockquote>
このとき注意することは、許可する「タグ」のリストを1つ1つ列挙する必要があるということです。「*」は、単にこれらの列挙したタグの中で、指定した「アトリビュートを許可する」という意味で使われます。