Wikiクローンのいくつかに、添付ファイルでクロスサイト・スクリ
プティング攻撃に対する脆弱性が見つかっています。
http://www.ipa.go.jp/security/vuln/documents/2005/JVN_465742E4_Wiki.html
http://jvn.jp/jp/JVN%23465742E4/index.html
結局、添付ファイルとして HTML のテキストをを送り込んだら、そ
れをそのまま Content-Type: text/html で送り返すという所に問
題があるということなのでしょう。
対策としては、添付ファイルは、Content-Type:
application/binary にしてしまって、ダウンロードしてもらえば
いいかと思いました。まあ、ダウンロードしたファイルをピコピコ
すれば、それはローカルの権限で JavaScript が動いたりしてもっ
と危ないという話もあるかもしれませんが、それはクロスサイト・
スクリプティング攻撃ではないので、クッキーが盗まれるとか、そ
ういうことはありません。
PukiWiki では、こんな感じで修正してみました。
----------------------------------------------------------------------
% diff attach.inc.php.~1~ attach.inc.php
603c603,604
< header('Content-Type: ' . $this->type);
---
> // header('Content-Type: ' . $this->type);
> header('Content-Type: application/binary');
%
----------------------------------------------------------------------
Tiki は、こんな感じ。
------------------------------------------------------------
% diff attach.rb.~1~ attach.rb
195c195,196
< "Content-Type: " + ctype + "\r\n",
---
> # "Content-Type: " + ctype + "\r\n",
> "Content-Type: " + "application/binary" + "\r\n",
%
------------------------------------------------------------
ただ、こうしてしまうと、全部の添付ファイルが
application/binary になってしまうので、image/gif なんかもダ
ウンロードしてしまって、インライン・イメージが使えなくなりま
す。インライン・イメージを有効にするには、もう少し if 文入れ
て凝ったものにした方がいいでしょう。
\\ 新城 靖 (しんじょう やすし) \\
\\ 筑波大学 電子・情報 \\
記事 <YAS.05Ma...@kirk.is.tsukuba.ac.jp> で
Yasushi Shinjoさんは書きました
> 対策としては、添付ファイルは、Content-Type:
> application/binary にしてしまって、ダウンロードしてもらえば
> いいかと思いました。
RFC2046/IANA的には、application/octet-stream ですよね。
っていうのはさておき、
Internet Explorer は Content-Type や拡張子は無視して、データの先頭部分を
実際に見てから、どう表示するかを決定するという困った仕様になってるので、
Content-Type を application/octet-stream としても、<a herf="...">でリンク
するのでは意味がありません。
どうせやるなら、
Content-Disposition: attachment; filename="foobar"
といったヘッダを出力すれば、IE の場合、ファイル保存処理を行ってくれるように
なります。
PROJECT TEAM DoGA 高津正道 ta...@doga.jp
TBD0...@nifty.ne.jp
PROJECT TEAM DoGAのホームページ → http://doga.jp/
5月22日(日) 今日のマーフィーの法則 [バン・ロイの第1法則]
忠告の善し悪しを区別できる人は、忠告を必要としていない。