まだ重たいCMSをお使いですか?
毎秒1000リクエスト を捌く超高速CMS「adiary

2009/07/01(水)メールの添付ファイル名とMIME文字コードと色々メモ

2009/06/29(月)メールヘッダって複雑

[ml:users:00343:メーリングリスト]で話題になっている件と関連して、かなりやっつけ仕様であるメールのパーサ部*1をもっとまともにしようと手を入れ始めたのですが……。

あまりに汚い仕様に驚愕した(汗)

SMTPといいメールといい、とても古い仕様*2を引きずりつつ実際に使われる中で拡張された仕様を盛り込んでるため意味不明なぐらい複雑怪奇。メール関連はRFCの中で度重なるアップデートをしてるんだけども、古い仕様を切り捨てられない世の中の事情が、問題を複雑化しているみたいです。*3

これが終わればVer2.09リリースですが(βから)、まだ少しかかりそうです。

*1 : これでも最初から比べればずいぶんまともな実装だけども、コードのあちこちでJIS決め打ちだったりする。

*2 : 未だに7bitで送る習慣とか。

*3 : SMTPといい、メールの仕様自体を一新するreplaceを作って、徐々に置き換えるとかどうにかならないものなんでしょうか。IPv6のようなreplace仕様がまるで普及しない現実をみると無理でしょうけど。

2009/06/28(日)adiary セキュリティアナウンス

adiary Ver1.992~Ver2.08を第3者にレンタルしている場合、セキュリティ上重大な欠陥がありますので、直ちに以下の差分を適用してください。

adiaryを設置者個人で利用している場合はこの問題の影響を受けません

問題の詳細

本来なら許可されない埋め込みテキストへのJavaScript等の記述が、トラストモードの設定に関わらず常に許可されていました。これは開発時のデバッグコードが、開発完了後もそのまま残り続けたことが原因です。

第3者にJavaScriptの埋め込みを可能とすることでセッションCookieの盗聴が可能になり、これによりadiaryを利用する他のアカウントをセッションハイジャックされる危険性があります。

修正の詳細

■修正前
$tag_escape->{allow_anytag} = 1; #$self->{trust_mode};
■修正後
$tag_escape->{allow_anytag} = $self->{trust_mode};

2009/06/11(木)adiary Ver2.08 リリース情報

Ver2.07のバグフィック版です。IE8への対応修正がメインになります。

ダウンロードはこちらから

Ver2.07→Ver2.08の変更点

  • IE8に対して標準準拠させるmetaタグを出力するようにしました。
  • IEの標準準拠モードにおいて、リサイズフォームの挙動がおかしかったので修正しました。
  • IE8のtextarea関連のバグのうち、line-height に起因するものは対処しました。(Thanks to Yorkfield
  • 【fix】CSSの@charset宣言の書式が厳格でなかったので修正しました。(IE8での"≫"の文字化けの原因)
  • 【fix】menu 画面でタグ閉じ忘れやクラス指定ミスがあったため修正しました。
  • 【fix】2.04から実装された、メール投稿時のファイル名を日時で書き換える機能が配布物に含まれてなかったのできちんと収録しました。(Thanks to nasano※コメント欄参照
  • 【fix】「管理メニュー」の「システム管理」→「コメントの一括削除」という未知の項目を削除し忘れたため消しました*1。(Thanks to nasano
  • アルバムのファイル選択欄<input type="file">で、ファイル名を直接入力できなくなっているIE8における仕様変更(Fx等ではこれが標準)をJavaScriptで追加した場合は直接入力できるという言う謎の仕様(?)を利用して切り抜ける細工しました。*2
  • 携帯画面でのコメント表示1件ごとに<hr>を入れるようにしました。

今回の変更に関する参考資料/IE8のメモThanks to Yorkfield

*1 : 一度SPAM対策で、管理ブログ全体に渡ってコメントを削除する機能を付けようと思い立ったときの名残でした。

*2 : あまり褒められる実装ではありませんが、直接入力したい根強い要望があるのと、そうしないとフォームの挙動が不揃いで利用者が混乱しかねないので。

Version2.00(β含む)以降からの乗り換え

  • そのまま上書きしてください。
  • Ver2.05以前の場合、uploader.conf.cgi をサンプルから再生成してください。

なおVer2.06よりアルバムシステム関連のJavaScriptの置き場が変更になっていますので、紛らわしい場合は theme/*.js を消してから上書きしてください。

Version1.44以前(C73/2.00α含む)以前からの乗り換え

Version2.00への移行処理を先に行ってください。

2009/06/07(日)adiary Ver2.08β2

Ver2.07のバグフィック版です。IE8への対応修正がメインになります。

変更点について動作テストをしていただけると助かります。

変更点

  • IE8に対して標準準拠させるmetaタグを出力するようにしました。
  • IEの標準準拠モードにおいて、リサイズフォームの挙動がおかしかったので修正しました。
  • IE8のtextarea関連のバグのうち、line-height に起因するものは対処しました。(Thanks to Yorkfield
  • 【fix】CSSの@charset宣言の書式が厳格でなかったので修正しました。(IE8での"≫"の文字化けの原因)
  • 【fix】menu 画面でタグ閉じ忘れやクラス指定ミスがあったため修正しました。
  • 【fix】2.04から実装された、メール投稿時のファイル名を日時で書き換える機能が配布物に含まれてなかったのできちんと収録しました。(Thanks to nasano
  • 【fix】「管理メニュー」の「システム管理」→「コメントの一括削除」という未知の項目を削除し忘れたため消しました*1。(Thanks to nasano
  • アルバムのファイル選択欄<input type="file">で、ファイル名を直接入力できなくなっているIE8における仕様変更(Fx等ではこれが標準)をJavaScriptで追加した場合は直接入力できるという言う謎の仕様(?)を利用して切り抜ける細工しました。*2

*1 : 一度SPAM対策で、管理ブログ全体に渡ってコメントを削除する機能を付けようと思い立ったときの名残でした。

*2 : IE8のみ。あまり褒められる実装ではありませんが、直接入力したい根強い要望があるのと、そうしないとフォームの挙動が不揃いで利用者が混乱しかねないので。