プロが教える店舗&オフィスのセキュリティ対策術

画像アップロード時のファイル名を、ハッシュ値に書きかえている実装をよく見るのですが、あれって別にハッシュじゃなくても良いのでしょうか?

・例えば、下記URLにアップロードする際、画像ファイル名を(容易に推測されやすい)256.jpgに書き変えると、セキュリティ的にマズいのでしょうか?
<URL例>
・http://〇〇/256.php

■分からない点
・「ブラウザから渡されたファイル名は汚染リスクがある」と書いてあったのですが、この意味は、「ブラウザから渡されたファイル名をそのまま使用してはいけない」ということだけでしょうか?
・書きかえるファイル名は何でも良い?
・上記のように、推測されやすいファイル名でも問題ない?

■質問背景
・ファイル名をハッシュ値に書き換えると、FTPとかで確認する際やりづらいかなと思い、質問しました

A 回答 (1件)

>「ブラウザから渡されたファイル名は汚染リスクがある」と書いてあったのですが、


>この意味は、「ブラウザから渡されたファイル名をそのまま使用してはいけない」
>ということだけでしょうか?

はい。

>書きかえるファイル名は何でも良い?

はい。重複さえしなければいいです。データの(バイナリの)ハッシュ値を使えば「中身が同じ画像なら同じファイル名」になるので無駄がなくなる(ことが期待できる)というのはありますが、二次的な話です。バイナリでなくmicrotime()やアップロードユーザ名+追番などのハッシュ値を使うこともありますしね。

>上記のように、推測されやすいファイル名でも問題ない?

問題ないです。隠すことが主目的ではありませんので。

本当に隠蔽したいなら、httpでアクセスできない場所(DocumentRootより上の階層とか、.htaccessでアクセス不能にしたディレクトリ)に置いて、phpスクリプト経由でしかアクセスできなくします。httpでアクセス可能な場所に置くのであれば、アクセスされることは想定すべきです。
    • good
    • 0
この回答へのお礼

回答ありがとうございました。

>データの(バイナリの)ハッシュ値を使えば「中身が同じ画像なら同じファイル名」になるので無駄がなくなる(ことが期待できる)というのはありますが、二次的な話
・なるほど、そういう意味なんですね
・説明、大変分かりやすかったですー

お礼日時:2014/11/13 07:53

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!