違反のないマイリストの応用
_ 少し前まで、サブタイトルにタグを書けるというのを利用してアクセス解析のコードを書いていました。 しかし、見出しである h2 に見出しでないものを書くのはどうにも気持ち悪さが残ります。 というわけで、本文のテンプレートに埋め込む方法に切り換えました。 既に定着しつつある「マイリスト」を使うそれです。
_
先にどのように展開されるのか確認しておきましょう。
タイトル, URL, メモの内容をそれぞれ T, U, M とすると、生成されるタグは <li><a title="M" href="U">T</a></li> となります。
つまり、M に書けるのはタグを含まない文字列、T に書けるのは a 要素の中に書けるインライン要素、即ち 見出し要素に含められるものから a 要素自身を除いたものだけ。
...。
サブタイトルよりも制限がきついじゃないですか /_;
_ 思考錯誤の結果。 やり方としてはイレギュラーなものの、DTD 違反せずにタグを自由に打つ方法に辿り着きました。 やっている事は分かっている人には半ば自明なもの。 XSS (クロスサイトスクリプティング) で良く使われるものです。 つまり、記入するパラメータにタグ終端 '>' を含めて強制的にタグを閉じ、続けて好きなタグを書くというものです。
_
現時点でのココログのシステムでは、上のパラメータ T, U, M のサニタイジングをしないらしく、'<' や '>' などを文字参照に変換しません。
これは、不特定多数の人が入力するフォームであれば XSS に直結するセキュリティホールになります。
とはいえ、「マイリスト」などはページ管理者だけが入力するものなので、必ずしもセキュリティホールになるとは言えません。
但し、将来のシステム改編でサニタイジングされるように変更される可能性があります。
あくまでも現在可能な最善の方法でしかない、という事を念頭においておくべきです。
もっとも、その頃にはもっと自由度の高いシステムに改善されているに違いないったら違いありません。
えぇ、そうに決まっていますとも。
(^^;
_ えーと、話が逸れてしましました。 小難しい話は置いておいて、具体的な方法をまとめておきましょう。 慣れない人にははりややこしい話かもしれません。
_ ここでは、このページで使っている忍者 TOOLS のアクセス解析を例にします。 お約束通り " " と名前を付けた「マイリスト」を作成して、その項目に次のように入力します。 忍者 TOOLS の標準のアクセス解析のコードをちょっと弄って使っていますので、適当に読み替えてくださいませ。 また、人によって異なる箇所は strong で強調しておきますので、そのまま使わないようご注意を。
| タイトル |
<script type="text/javascript">nin=02;hattori="10";</script>
<script type="text/javascript" src="http://j3.shinobi.jp/Rin?0245773"></script> <noscript><p> <a href="http://x3.shinobi.jp/bin/gg?024577310" target="_blank"> <img alt="[☆]" src="http://x3.shinobi.jp/bin/ll?024577310" /> </a> <a href="http://www.shinobi.jp/" target="_blank">アクセス解析</a> </p></noscript></div><a href=""> |
| URL | "></a><div class="analyzer |
| メモ | (空もしくは好きな文字列) |
_ これから生成される XHTML コードは、次の右の列が連結されたものになります。
| 固定 | <li><a title=" |
| メモ | (空もしくは好きな文字列) |
| 固定 | " href=" |
| URL | "></a><div class="analyzer |
| 固定 | "> |
| タイトル |
<script type="text/javascript">nin=02;hattori="10";</script>
<script type="text/javascript" src="http://j3.shinobi.jp/Rin?0245773"></script> <noscript><p> <a href="http://x3.shinobi.jp/bin/gg?024577310" target="_blank"> <img alt="[☆]" src="http://x3.shinobi.jp/bin/ll?024577310" /> </a> <a href="http://www.shinobi.jp/" target="_blank">アクセス解析</a> </p></noscript></div><a href=""> |
| 固定 | </a></li> |
_ 分かりにくいので展開結果を簡略化すると、次のようになります。 div 要素はほとんどの要素を含める事が可能ですから、タイトルに指定する "(使いたいコード)" の部分をカスタマイズする事で、幅広い応用が利きます。 それでも、style 要素なんかは書けないのですけれど。
<li><a title="" href=""></a> <div class="dummy">(使いたいコード)</div> <a href=""></a></li>
| 固定リンク


コメント
facetと申します。はじめまして。いつも興味深い情報をありがとうございます。やっとコメントが書けて嬉しいです。(何故か今まで自分のところからはコメントが書き込めなかったのです。)
> 先にどのように展開されるのか確認しておきましょう。タイトル, URL, メモの内容をそれぞれ T, U, M とすると、生成されるタグは T となります。
の部分ですが、マイリストの設定(高度な設定)のメモの表示を「テキスト表示」に変更すると、TMと変更することができているように思います。ソースをみて推測したことですので確信ではありませんが。いかがでしょうか。
投稿: facet | 2003/12/06 10:50
うわ。このコメント、タグが全部消えるんですね。すみません、書き込みに慣れていないもので。ちゃんと確認してから投稿しないとだめですね…。
先にどのように展開されるのか確認しておきましょう。タイトル, URL, メモの内容をそれぞれ T, U, M とすると、生成されるタグは lia title="M" href="U"T/a/li となります。
この生成されるタグが、「テキスト表示」に設定を変更することで、
lia href="U"Tbr /M/a/li
になっているように思うと言いたかったのです。失礼しました。
投稿: facet | 2003/12/06 11:08
おー。ないすなふぉろー、ありがとうございます ^^=
そっか、「高度な設定」なんてのがあったとわ。
全然気が付いていませんでした。むー、悩んで損した ^^;
おっしゃる通り、「メモをテキスト表示」に設定してあるなら、U="", T="", M=(使いたいコード) と指定してやるだけで簡単に実現できますねぇ。"br /" が入ってしまっても気にならない方には、こっちの方が断然お勧めです。
今まで、コメントフォーム、トラックバック URI が表示されていなかったのは、http://siena.tea-nifty.com/blog/2003/12/post_5.html#c4469 の通り、あたしのぽかでした。お許しを〜。
投稿: Siena. | 2003/12/06 11:27