[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Security fixes and large changes
- From: TSUCHIYA Masatoshi <tsuchiya@xxxxxxxxxxxxxxxxxxxxxxx>
- Date: Wed, 02 Jul 2003 17:56:28 +0900
- X-ml-name: emacs-w3m
- X-mail-count: 05327
(1) 表題に,<>& などの予約文字が含まれていた場合に about://db-history/
や bookmark / antenna などが危険な動作をしていたので,予約文字を文字参
照で置き換えるようにして対処しました.
従来版では,例えば,
<title></a><a href="unsafe-site">安全なサイト</title>
というような悪意を持って構成された表題のページを閲覧した後で,history
などを表示させて,そのページに移動しようとすると,unsafe-site に飛ばさ
れてしまっていました.
安定版に対するパッチは検討中です.
(2) SSL で保護されたページから,保護されていないページに移動する時のた
めに
You are about to leave secure page. continue?
という警告が組み込まれていたのですが,この警告のタイミングが遅すぎまし
た.従来版では,w3m-retrieve() で相手先サーバーに post-data などを送信
してしまった後で,この質問が行われていたので,警告の意味をなしていませ
んでした.
幹の先端は対処済です.安定版に対するパッチは検討中です.
(3) arrived DB を再編しました.従来,fragment つきの URL にアクセスす
ると,
http://emacs-w3m.namazu.org/#download
http://emacs-w3m.namazu.org/
fragment を含む URL と,含まない URL の2つのエントリが作成されて,コン
テンツの最終更新日時や表題は,その両方に記録されていました.しかし,こ
の方法ではコンテンツが更新されて,fragment つきの URL が存在しなくなっ
たときなどに,簡単に矛盾が発生してしまいます.
そのため,
(3.1) fragment を含まない URL を基本エントリとして,表題(title),最
終更新日時(last-modified),文字コード(content-charset),文書タ
イプ(content-type)は,基本エントリのみに記録する.
(3.2) fragment を含む URL のエントリは,参照日時(arrived-time)の情報
のみを記録する.
(3.3) fragment を含む URL のエントリよりも,含まないエントリの方が必
ず優先されて記録に残るようにした.
という趣旨の改変を行いました.
ただし,この改変は副作用を伴います.改変後の ~/.w3m/.arrived を,変更
前の emacs-w3m で開こうとすると,w3m-keep-arrived-urls 回数だけ
w3m-last-modified() が呼び出されてしまうので,とてつもない起動時間がか
かります.そういう場合は,~/.w3m/.arrived を消去して対処してください.
(4) w3m-prepare-content() を文書タイプ(content-type)に基づく書き換えを
行う層として,再定義しました.処理の流れの概略は以下の通りです.
w3m-goto-url
w3m-retrieve-and-render
w3m-retrieve
コンテンツの取得
w3m-prepare-content
文書タイプに基づく書き換え
w3m-filter
URIに基づく書き換え
w3m-create-page
書き換えられたコンテンツを対象として,実際に表示するページを作る
文書タイプに基づく書き換えとしては,以下のような応用があるのではないか
と思っています.
a) text/*
視覚障害者向けの書き換えなど
b) Excel / Word / PowerPoint ファイル
-> xlhtml, wvHtml, ppthtml など
c) PostScript / PDF ファイル
-> ps2text, pdf2text など?
d) tar/lzh などの書庫ファイル
-> 変換するか,tar-mode などを起動するか.
e) 画像
Emacs20/Mule の場合 = convert による bitmap 形式への変換
Emacs21/XEmacs の場合 = convert による表示可能形式への変換
画像の大きさの調節
最後の画像の変換は,w3m-create-image-page() の管轄かも知れませんが.
この変更を実現するため,w3m-content-type-alist の意味を拡張し,
w3m-retrieve-and-render() 周辺を再整理しました.
副産物ですが,文書タイプが分からないコンテンツに対してユーザーの指定を
求めるタイミングが,従来よりも遅くなって,コンテンツ取得後になっていま
す.この変更は,ファイルの magic number に基づく文書タイプの推定を行う
ための基礎となるはずです.というわけで,emacs lisp 版 file コマンドを
作成する人を募集中です.
;; あー疲れた
--
土屋 雅稔 ( TSUCHIYA Masatoshi )