はてなダイアリーXSS対策
はてなダイアリーでは、ユーザーの皆様に自由にHTMLタグやスタイルシートを入力して頂きながら、クッキー漏洩などのクロスサイトスクリプティング=XSS脆弱性の回避のため、以下の処理を行なっています。
- ヘッダ、フッタ、日記本文の表示時にHTMLを解析し、はてなダイアリー利用可能タグに定めるタグおよび属性のみを出力します。
- 利用可能タグに設定されていない属性は削除し、利用可能タグに設定されていないタグの場合には<script>といった文字列に変換します。
- href,src,cite,background,action 属性で外部 URL が参照される場合、URL が適切な文字で構成されているかチェックを行ないます。
- タグ内の属性値は、「<」を「<」に、といった変換を行ないます。
- スタイルシート内の「\69\6D\70\6F\72\74」といった文字参照を、EUC文字列に置換します。
- スタイルシート内の 不適切な制御コード(0x00など) を削除します。
- スタイルシート内に @i(mport)? (url)?(...)という指定がある場合、
には、そのファイルの内容をヘッダ内に挿入します。
なお、この機能ははてなアンテナで当初利用可能であった@import機能からの移行をスムーズに行うための措置であり、ページの表示速度も遅くなるため、利用されないことを推奨します。 - スタイルシート内の「\」文字で、その後に続く文字が「'」「"」「{」「}」「;」「:」「(」「)」「#」「A」「*」でないものを削除します。
- スタイルシートを解析し、「javascript」「vbscript」「@import」「cookie」「eval」「expression」「behavior」「behaviour」「binding」「include-source」「@i」の文字列をその文字列が無くなるまで削除します
- スタイルシートを解析し、url(...)で指定された URL が適切な文字で構成されているかチェックを行ないます。
- スタイルシート内の「<」「>」を「<」「>」に変換します。
- スタイルシート内の「*/」を「*/ 」(コメントを閉じた後に空白二個)に変換します。
つまり、基本的な考え方として、HTMLタグは何も使えない状態から利用できるものを限定して定義し、スタイルシートについては、全ての記述の中から利用できない文字列を定義するという考え方です。
これは、悪意のある利用者によってcookieの値が漏洩し、なりすましなどの悪用が行なわれることを防ぐことが目的であり、安心してはてなをご利用頂けるための措置です。
一部制限のために不便をおかけしますが、ご了承ください。
* はてなダイアリーキーワード:はてなダイアリーXSS対策
- 2010/11/17 18:02:22 はてなダイアリー機能一覧
- 2009/05/26 11:16:54 アクセスカウンターをつける
- 2011/01/19 16:28:34 スタイルシートを編集する
- 2011/01/19 16:25:26 ヘッダ・フッタに情報を載せる
- 2010-11-04 02:30:06 隠れん坊将軍の隠れ蓑 - はてなダイアリーで使える対IE用CSS hack
- 2009-10-08 07:17:46 へし日記 - サンプルを表示させる
- 2008-10-30 22:15:57 toinamiの日記β - 文字コード問題続き
- 2008-10-01 04:04:39 Untitled Documents. はてな出張所 - 今日のbookmarks
- 2007-12-05 15:57:37 はてなグループ日記 - はてなグループでstyleタグ、style属性が使用可能になりました(開発者向け)
- 2007-11-29 20:24:08 まっちゃだいふくの日記★とれんどふりーく★ - [http://hatenadiary.g.hatena.ne.jp/keyword/%e3%81%af%e3%81%a6%e3%81%aa%e3%83%80%e3%82%a4%e3%82%a2%e3%83%aa%e3%83%bcXSS%e5%af%be%e7%ad%96:title=はてなダイアリーXSS対策 - はてな
- 2007-11-29 16:03:06 はてなダイアリー日記 - はてなダイアリーでstyleタグ、style属性が使用可能になりました(開発者向け)
- 2007-04-02 23:11:53 青空を探す、旅の記録。
- 2007-04-02 14:08:34 [開発][Web]安心、安全なWebに。
- 2007-03-26 19:30:29 toinamiの日記β - [?D]CSS3はありなのか?




