ばけらの HTML リファレンス(未完成)

bakera.jp > 鳩丸リファレンス > ばけらの HTML リファレンス(未完成) > 要素一覧 > plaintext要素

plaintext要素

※この要素は廃止されました。

要素名バージョン開始タグ終了タグ分類/親中身
plaintext2.0, 2.x, 3.2必須必須CDATA

plaintextの解説

plaintext要素は HTML2.0 成立時点ですでに「推奨されない」とされていた要素です。HTML3.2 でも残っていましたが、HTML4 で廃止されました。これから HTML を書く人は、この要素を使うべきではありません。

plaintext要素の中身は、全てプレーンテキストとしてそのまま表示されます。PRE と異なり、内容は CDATA ですので、< や &, <!-- --> のような記述にも SGML的な解釈は及ばず、そのまま表示されます。この点は同じく廃止された xmplisting と同様なのですが、plaintext は使用できる場所が異色です。この要素は body要素の中で使用するのではなく、body要素の後ろ、html要素直下に記すことができました。

なお、HTML2.0 成立前のドラフトでは、この要素は終了タグのない空要素として定義されていました。意図してなのかそうでないのかは分かりませんが、多くのブラウザはこのドラフト仕様のままの実装をしています。よって、終了タグを書くとそのまま表示されてしまったりします。

<plaintext>という文字列の特殊な用法

<plaintext> という文字列には、text/plain なリソースのクロスサイトスクリプティング脆弱性対策として使用するという特殊な用法もあるようです (参考: Re: Content-Type: text/plain なページでIEに生ずるクロスサイトスクリプティングの問題 (memo.st.ryukoku.ac.jp))。

メッセージが text/plain で出力されていたら、それは HTML ではなくテキストファイルだということなのですが、MSIE はリソースの中身を読み、中身が HTML っぽい雰囲気ならば HTML として解釈してしまいます。それによって、text/plain なリソースで XSS という、本来はありえないことが起きてしまいます。

しかし text/plain なリソースの頭に <plaintext> という文字列を書いておくと、たとえ HTML として解釈されても以降は全て単なる CDATA として扱われますから、<script> という文字列があっても何も起きないというわけです。

なお、Windows XP SP2 をインストールすると、「拡張子ではなく、内容によってファイルを開くこと」を無効にすることができるようになります。最初からこれが無効ならば、こんな変なところで悩まされることはないのですが……。

最近の日記

関わった本など