毎秒1000リクエスト を捌く超高速CMS「adiary」
2006/10/16(月)β11リリース情報
(10/16)ページ送り機能が手違いで入っていなかったのを修正しました。現在ダウンロードできるものにはページ送りが入っています。ご迷惑をおかけしました。*1
β10→β11の変更点
- ページ送り機能が付きました。
- 【さつきパーサ】タグ認識ルーチンの一部が間違っていたので修正しました。
- 【さつきパーサ】「*[日記]今日のできごと」のように、タグ記法[~]の中身が未定義のとき、そのまま[日記]と出力するように変更しました。
- 【さつきパーサ】リスト記法で番号指定のみの場合に正しく処理されるよう変更しました。(propose by serika)
- 【さつきパーサ】pre記法>>|~|<<使用後のブロック記法で、改行が強制的に付加される不具合を修正しました。
- 【記法】インライン要素のクラス指定機能を追加しました。例「[class:small:小さい文字]」→小さい文字。
- 【記法】<del>, <ins>タグをブロック要素として展開する記法を追加しました。(詳細情報)
- 【fix】「#」を含むアドレスからトラックバックされた際、#が抜け落ちる不具合を修正しました。
- 【fix】スケルトンシステム最適化の過程で、MT形式の出力(エクスポート)が崩れていたのを修正しました(こちらで指摘して頂きました。ありがとうございます)。
- その他、雑多な修正。
β10以前からのアップグレード
ページ送り実装に伴い、カテゴリ一覧のリンク方式が変わりました。適当な日記を開いて編集→保存するか、日記帳の設定を開いて保存しサイドバーの情報を再生成してください(気にならない場合は放置しても問題ありません)。
β5以前からのアップグレード
adiary.conf.cgi に次のエントリを追加してください。
<$Temp_dir = 'data/tmp/'>
2006/09/19(火)はてなの新機能
9/14のaa記法といい、最近はてなの機能追加が豊富。別にはてな互換をめざしてるつもりはないのですが*1、でも良い機能ならadiaryにも付けたいと思うのが人情というもの。
ただ、はてなには12人のPerlプログラマが居るそうで……さすがに1人追いかけるのは辛いですねぇ。はやくVersion1.00を一般公開して、subversionでのリポジトリ管理に移行して、第3者の手も借りたいところです(^^;; とはいえテーマ開発して下さったり、バグ指摘してくださったり、機能拡張アイデア(要望)を出して下さったり、えらい助かってます。
2006/09/19(火)β10リリース情報
β9→β10の変更点
- 単一記事指定時も、カレンダーの表示を変更するようにしました。
- カテゴリ編集画面で一括変更が可能なように改良しました。
- カテゴリが1つしかないとき、サイドバーに表示しないようにしました。
- はてなブックマークのアイコンを表示できるようになりました(詳細設定→表示設定→はてなブックマークアイコン)
- 【Satsuki-system】スケルトンコンパイラをさらに改良しました。
- 【さつきパーサ】リスト記法において、valueを指定する機能を付けました。
- 【さつきパーサ】テーブル記法において、セルの連結に対応しました。(idea by serika)
- 【さつきパーサ】[hatena:help:アスキーアート(AA)を簡単にきれいに表示する(aa記法):aa記法]に対応しました。
- 【テーマ】テーマ開発作法を少し変更しました。*1
- 【RSS】(続きを読む)以降は省略して(削除して)配信するようにしました。
- その他、細々とした修正。
β6以降からのアップグレード
そのまま上書きしてください。
β5以前からのアップグレード
adiary.conf.cgi に次のエントリを追加してください。
<$Temp_dir = 'data/tmp/'>
2006/09/13(水)β9リリース情報
トラックバックされた不具合を修正し上記ファイルを差し替えました
設定を保存するとタイトルイメージなどが強制的に追加される不具合を修正しました。お困りの方はお手数ですが落としなおしてください。
β8→β9の変更点
今回はbug-fixとXSS対策がメインです。
- 【XSS対策】CSSXSSされない対策/CSSによるXSSをさせない対策を取りました。また一部のXSS対策が不十分だったため修正しました。
- 【スケルトン】<span class="adminmenu">全体を<span class="admin-links">で括りました(idea by kaede)。
- 【さつきパーサ】[hatena:help:はてな記法一覧:はてな内リンク記法]への互換性を高めました(adiaryでは[hatena:r:sample]などと使用します)。
- 【fix】スケルトンコンパイラにおいて括弧 ( )対応の検出が狂っていたので修正しました*1。
- 【fix】コメント等編集画面から、日記を削除できなくなっていたので修正しました。
- 【fix】日記インポート画面にエラーがある不具合を修正しました。
- 【fix】はてなテーマ使用時にIEで表示が崩れる問題を修正しました。
- 【fix】任意の日記帳作成画面が表示出来なくなっていたので修正しました。
- 【テーマ】「lfdiary」を最新版(β8で一部の表示が崩れる問題に対応)に差し替えました。
- 【テーマ】テーマ「このみ」を収録しました。
- その他、細々とした修正。
- その他、細々としたクラスの追加。
β6以降からのアップグレード
そのまま上書きしてください。
β5以前からのアップグレード
adiary.conf.cgi に次のエントリを追加してください。
<$Temp_dir = 'data/tmp/'>
コメント
IE向けのセキュリティー対策は不毛ですね。やらないわけにはいかないし、やったから言ってと少しも機能が増えるわけでもなく無駄にソースが増えるばかり*2。その上、機能追加より何倍も手間がかかりモチベーションも上がりにくいという(;;
2006/09/12(火)adiaryのXSS対策
Version1.00β9以降についての記述です。
対外部ユーザー=アカウント非保持者
- コメント欄、TBなどのtag記号<, >, "はすべてエスケープ。
- USER_AGENT, DNS逆引きホスト名内のタグ文字などをエスケープ。
- PATH_INFOなどの文字列は、エスケープなしに(表示等に)使用しない。
- CSSXSS対策。「{」を「{」に置き換える。
対内部ユーザー=アカウント保持者
スタイルシートXSS対策
日記本文内の style="" 指定
- \, @記号および、0x00~0x1fの制御コード、0x80~0xffまでの文字コード(全角文字など)を除去
- /*, */, &#, script, java, exp, eval, cookie, includeといった文字列が完全になくなるまで除去*2
ユーザースタイルシート内
- TAB, LF以外の制御文字を除去する。
- コメントを最初に退避し、"*/"を"*/ "に置き換える。
- "~"といった文字列(改行を含む)を退避し、文字列内から改行を除去*3、さらに日本語文字で終わる場合はスペースを付加する。(EBXSS対策)
- ", ', *, #を除く文字の、手前に付く\記号を除去する。
- 0x80~0xffのコード(全角文字など)をすべて消去する。
- /*, */, &#, script, java, exp, eval, cookie, includeといった文字列が完全になくなるまで除去する。
- TAB や LF を間に挟んだ上記の記号列が1つでも存在する場合、TABやLFの手前にスペースを1つ追加する。
- url() が正しいかチェックする。相対リンクの場合は"./"を先頭に付加する。
- 文字列を復元する。
- コメントを復元する。
参考文献
- はてなダイアリーXSS対策
- IE における "expression" の過剰検出による XSS の 誘因
- 通常とは異なる記述の javascript: プロトコルが実行される(microsoft) … TABの代わりにスペースや改行でも同様に解釈されるので注意。
スクリプト側で対応不可能な既知のIE脆弱性
お願い
adiaryでセキュリティーホールを発見した場合はどんなに些細なものでもお知らせ下さい*4。また「このセキュリティーホールに対応していますか?」という問い合わせはこの記事にどうぞ。