RSSモジュール もうちょっと何とかならないか
はてなブックマークの生成するフィード(自分のブックマーク全体のRSSでも、HotEntryでも、「タグ『これはひどい』を含む新着エントリ」でも何でもよい)をはてなダイアリーのRSSモジュールで表示させていると、しばしば表示の乱れにお目に掛かる。
コメント無しのエントリのへんな表示
コメントの無いエントリのフィードはdescription
区間が閉じていない。より正しくは「閉じタグだけがあって開始タグが無い」。
そういうのをRSSモジュールで読み込むと description部分に「"rss"」なる文字列(引用符含む)が補われるようなのだけれども、この文字列がRSSモジュール表示時のA
タグのtitle
属性値にも使われていて、しかも引用符がエンコードされていない。その結果、A
タグ部分のソースが
<a href="http://..." title="" rss="">...</a>
みたいなことになってしまっている。
これ、もしもdescription部分に「"rss"」以外の文字をユーザが自由に入れる方法が見つかったとしたら、それだけでXSS脆弱性の原因になるなぁ。「" onMouseover="...」とか書けそうだ*1。
逆にエンコードのしすぎというのもある
description
区間中に「"」が出て来ると、はてなダイアリーのHTMLソースがこんなことになる:
<dt>06/09 13:24 <a href="http://www.brainyquote.com/quotes/authors/f/frank_b_kellogg.html" title=""It is not to be expected that human nature will change in a day."">Frank B. Kellogg</a></dt> <dd>&quot;It is not to be expected that human nature will change in a day.&quot;</dd>
dd
要素(これがRSSモジュール表示時のdescription部分だ)中でのエンコードが1回余計。前の例と違って脆弱性の原因にはならないだろうけれども、激しくブサイク。
CDATA
区間を解釈できるようになったのはよいが
アタマに余計な改行文字か何かが付いてるのが気になって仕方ない。HTMLソースはこんな感じ:
<dt>03/22 <a href="http://subakdoduk.exblog.jp/3376014" title=" ※MSIMEって「ごほうこく」を変換すると「ご報告」より先に「呉邦国」を出して来る癖が">【竹島】ご報告:dmoz側が島根サイトの説明を幾らか改善した件</a></dt> <dd> ※MSIMEって「ごほうこく」を変換すると「ご報告」より先に「呉邦国」を出して来る癖が</dd>
A
タグのtitle
属性値とdd
要素とが両方おかしくなっているな。
*1:これに近いことは以前はてなブックマークのエントリ標題/コメント欄の編輯で実際に起きたのを見たことがある。あの時は実際にJavaScriptのイベントハンドラを自由につけてしまうことが出来た。