- PR -

アップロードファイルに対するチェック

投稿者投稿内容
nao
会議室デビュー日: 2003/01/18
投稿数: 7
投稿日時: 2003-01-18 21:51
始めまして、naoと申します。
早速ですが質問させてください。。。

JavaのWEBシステムでファイルをuploadするんですが、
uploadされたファイルを閲覧する機能があります。
uploadされたファイルに閲覧者に害を及ぼすScript
などが含まれていることがあると思います。
その様な時にこれらをチェックする処理をしなくてはならないかと
思っています。

現状の私の知識では<script></script>の文字列を含むファイルや
xxx.jsなどのファイル名のファイルをシステムでチェックし
uploadさせないと言うような方法しか思いつきません。

他の方はどのようにしてチェックしてるのでしょうか?
参考URLやご意見等ありましたら、ご教授願えないでしょうか?
よろしくお願い致しますm(_ _)m
flower
会議室デビュー日: 2002/10/15
投稿数: 14
投稿日時: 2003-01-20 11:20
初めまして。

アップロードに関するチェックとして他に思い付くのが
・ContentType
・ContentSize
等でしょうか。

><script></script>の文字列を含むファイル

このチェックをアップロード時にしようと思うと結構手間ですね。
表示時にチェックをして、空文字に変換処理とかすれば良いのではないでしょうか?

とりあえず「アップロードさせてはいけないファイル」を明確にすれば、チェック処理も
洗い出せると思います。
nao
会議室デビュー日: 2003/01/18
投稿数: 7
投稿日時: 2003-01-20 11:59
ご返答ありがとうございます!

>とりあえず「アップロードさせてはいけないファイル」を明確にすれば、チェック処理も
洗い出せると思います。

最低でもhtmlとtxtファイルのなかにスクリプトタグの記入を不可にし、
.jsファイルは弾こうかと思っています。

他にもこんなのチェックしたほうがいいのではと思われるご意見等ありましたら
お願いしますm(TT)m
raystar
ぬし
会議室デビュー日: 2003/01/16
投稿数: 251
お住まい・勤務地: Tokyo/Japan
投稿日時: 2003-01-20 12:16
upされたファイルを閲覧するのであれば、
バイナリ形式のファイルはほとんどアウトですね。

アップされたファイルはダウンロードさせるのでしょうか。
これによって条件も変わるとおもいます。

ファイル形式だけが明確でかつ、少ない場合は
簡単なテキストファイルにUP可能な拡張子を
登録しておいて、アップロードの度に
そのファイルの形式をチェックするのもひとつの手です。
(DBつかうまでもないです)

閲覧方法はHPの一部に埋め込まれた形ですか?

もし、一部ではなくそのファイルそのものを閲覧できるのでしたら、
JSもHTMLも text/plain として扱えば、
スクリプトファイルも怖くないと思います。

ご参考まで。
小僧
ぬし
会議室デビュー日: 2002/08/14
投稿数: 526
投稿日時: 2003-01-20 12:23
>最低でもhtmlとtxtファイルのなかにスクリプトタグの記入を不可にし、
>.jsファイルは弾こうかと思っています。

例えば、特定の拡張子を持つファイルだけしかアップロードさせないというなら
ば、第1段階として拡張子での判断を行い、第2段階としてファイル内で悪さ
しそうなタグを無効化させるという方向ですよね。私でしたら、第1段階を抜いて、
アップロードされたファイルの中身は、全てチェックしてしまうようにすると思い
ます。少しでも危険性がある物はチェックチェック。
mikan
ベテラン
会議室デビュー日: 2002/08/19
投稿数: 58
投稿日時: 2003-01-20 13:00
初めまして。会議室デビューのみかんと申します。
私も今アップロード/ダウンロードを有するWebシステムに携わっているので、ちょっ
とお邪魔したいと思います。

naoさんのシステムではアップロードされるファイルは主にテキストファイルで
あると想定されているのでしょうか?
(ちなみに私のはOfficeドキュメントや画像ファイルが主で、不特定多数の人が
閲覧可能であるという前提です)

naoさんの曰く:
>最低でもhtmlとtxtファイルのなかにスクリプトタグの記入を不可にし、
>.jsファイルは弾こうかと思っています。

ということですが、たとえば以下のようなタグは検出は難しいと思います。

<span onmouseover="location.href='危険なサイト'">あああ</span>

それならば、raystarさんの言われるようにtext/plainとして返送するほうがい
いような気がします。


私の場合、先の述べましたようにおそらくはバイナリファイルが中心になると想
定されるシステムですので、受け付けるファイルに制限を設けるか否かでずいぶ
んと検討しました。
その結果、いかなるファイルも受理する、という方針になりそうで、受理に際し
て内容のチェックは行わないようになります。
ダウンロード時にはファイル直指定ではなくプログラムを経由して出力するので、
Content-Typeは設定していますが、それもオリジナルのファイルより得た拡張子
を信頼するにとどめています。

果たしてこの方針がどう出るのか、はまだわかりませんが、一般的にはどのよう
に制限(?)をかけるものなのでしょうか?
nao
会議室デビュー日: 2003/01/18
投稿数: 7
投稿日時: 2003-01-20 13:17
皆様貴重なご意見ありがとうございます!

raystarさん
>アップされたファイルはダウンロードさせるのでしょうか。

はい、そうです。

>閲覧方法はHPの一部に埋め込まれた形ですか?

一部なのです(TT

小僧さん
>第1段階を抜いて、
>アップロードされたファイルの中身は、全てチェックしてしまうようにすると思い
>ます。

バイナリ形式のファイルが大半なので(説明不足でした、すいません)
解析可能なファイルのみチェックをかけようかと
私は思っていますが、他に何かよい方法がありましたら、
ご教授願えませんでしょうか(TT

みかんさん
>naoさんのシステムではアップロードされるファイルは主にテキストファイルで
>あると想定されているのでしょうか?

私の場合もいかなるファイルも受理する、という方針です。。。
ですが、出来る限りチェックしようという方針です。

いろいろ説明不足な点もあり申し訳ございませんが、
引き続きご意見心よりお待ちしております。m(_ _)m
raystar
ぬし
会議室デビュー日: 2003/01/16
投稿数: 251
お住まい・勤務地: Tokyo/Japan
投稿日時: 2003-01-20 16:31
ううむ。。
HPの一部として取り扱うのは難しいですねtt
(複数MIMEを扱うため)

そのWEBシステムを利用するクライアントが
主にWindowsであれば、まずは拡張子を気にしてみてください。
禁止するファイルは
exe,
js,
html,
bat,
vbs,
etc..
と代表的な感じです。
UPしてはだめなファイルの種類とUPしてOKのファイルの種類
のどちらか少ないほうを配列なりファイルなりにもつと
いいでしょう。
これが第一段階。

次にhtmlファイルなどをtxtとしてUPされたような場合は
ファイル内容を正規表現でチェックします。
タグが埋め込まれていたりしたら除外してください。
これが第二段階。

後、添付ファイルはアイコン化などにして
リンクをはさんでダウンロードさせるほうがいいと思います。
これは設計の問題なので変更できるか難しいところですが。。
(テキストファイルであれば、IフレームもいいかもしれませんIEのみ)

何をされてはいけないのかといった
ボーダーラインを引けば、ルールとして
チェック条件はすぐにできると思います。

再度確認してみてください。

PS. やり方は山ほどありますので、これが全てではありませんtt

スキルアップ/キャリアアップ(JOB@IT)