WiLiKi:開発:ファイルアップロード
WiLiKi:WishListから出た話。
- ukai 2004/03/16 23:32:03 PST wikipageをつくるようにinline imageをuploadできるようにならないでしょうか。 例えば[[$$img もげ]] とか書いた時に dbに「もげ」というinline image dataがなければ「もげ?」となって ? をたどるとimage file uploaderとなって 「もげ」と対応するimageがuploadできて、元のところにinline image表示される というかんじで。いちおうsize制限はできたほうがいいと思います。
インタフェース
上のukai案はイメージアップロードだけですが、 PukiWikiみたいに任意のファイルをアップロード可能にするとかした場合、 どんなUIがいいでしょうねえ。
shelarcy(2004/03/17 20:28:56 PST) : ファイルは適切な場所に適切な時に upload できた方がいいと思うので、PukiWiki のものよりも ukai さんの [[$$file もげ]] という案がいいと思います。(添付メニューは作らない方がいいと思います。)ただし、ファイル名の重複対策として [[$$file もげ]] は [[$$file 現在のページ名:もげ]] に展開されるという方針で。また、添付されたファイルを削除したり upload し直したりするために、添付ファイルの一覧は PukiWiki のように表示しておく、そんなところでどうでしょうか?
セキュリティ
Shiro(2004/03/17 00:46:11 PST): そうっすね。rfc.mimeもできたので、multipart のリクエストのハンドリングを整理したら何らかのアップロード機構は つけられるとおもいます。 ただ、今のところWiLiKi本体に認証機構が無いんで、 ファイルのアップロードは慎重にやりたいですね。 何か良いアイディアはありますか?
- shelarcy (2004/03/17 01:35:27 PST): 本体のコードを見ていないので適当ですが、設定項目にこういうのを加えるというのはどうでしょうか?
(make <wiliki> ... upload-files '((avoid . ext . ("exe","pif","scr")) (avoid . over-size . kilobyte "200")) )
- もちろん、これは利用者の善意に期待する方のスタイルですが……
Shiro (2004/03/17 02:15:09 PST): ファイル拡張子は単なる名前に過ぎないので、 そこを制限するだけではちょっと…。正当なイメージファイルであることを 調べるのはなかなか厄介です。 (確か、昔、Linuxで公開侵入実験が行われた時、侵入に成功した手法は、 gifに偽装したelfバイナリ(ヘッダ部分だけだと有効なgifヘッダになるように構成)を 特殊なパスにアップロードしてcgi経由でそれを実行させるというものでした)。
- shelarcy (2004/03/17 04:10:07 PST): やっぱり拡張子だけでは問題がありましたか。偽装の話は昔少し関わりがあったことやIEでcontent-typeを無視して拡張子を見て等の問題を fix の話からなんとなく予想はしていたのですが、そういうこともできるとは知りませんでした。やっぱりその方面を知らないと迂闊な意見になってしまいますね。
- ukai (2004/03/17 02:54:52 PST) サーバ側ではアップロードされたものを生で
ファイルシステムにおかない(wikidata.dbか別の*.dbにつっこんでおく)、
クライアントにかえす時は、拡張子に応じてそれなりのcontent-type headerをつける
じゃ駄目でしょうか。
content-typeを無視して中身みてなんかしちゃう変なブラウザだとやばいかも
しれませんが。
- hira (2004/03/17 23:14:44 PST):これなら、安全なアップロードをWiLiKiの設定だけで実現できそうですね。私は変なブラウザについて何も知らないのですが。
- cut-sea(2004/03/17 18:01:04 PST)正当なイメージファイルってのは、どういった意味でしょうかね。
- サーバに対して害を与えるたぐいのファイル?
- いわゆる sex 関連表現など倫理上制限したいファイル?
- 中身が破損しているファイル?
- tsuchiya(2008/2/20 15:57:13 JST)組織内で閉じた環境で,wiliki を使っています.認証は .htaccess でかけてあるので,無制限にファイルのuploadはできません.そういうところで使っている1ユーザとしては,ファイルアップロード機能は「デフォルトoff」にしておいて,ユーザの責任で「on」にするようにしておいてさえ貰えれば良いのではないかと思います.
実装
何でもwiliki.cgiにやらせるのではなく、アップロードは別cgiっていうのも ありだと思います。別々に認証ポリシーを設定させることもできるかもしれないし。