ユーザーは画像をアップロードできるようになり、別のファイルと同じ名前にならないように名前が変更されます。それらを 1.jpg、2.jpg、3.jpg などと呼ぶような単純な規則を使用すると、他のユーザーは単純に 4.jpg と入力して他の人の画像を見ることができます。
イメージ名を推測するのが難しいことを保証しながら、イメージに異なる名前を付ける方法または規則はありますか?
PHPスクリプトを記述して、21412adfs.jpgのように毎回疑似ランダム画像名を生成することができます。
さらに良いことに、アップロードするファイルの名前を取得し、それに6桁の乱数などを追加します。たとえば、19353--toy--car.pngの場合、6桁の数字を日付を表す数字に置き換えることもできます。アップロードされた画像の。
命名規則は、セットアップとアーカイブの目的に最適なものであれば、実際に必要な形式にすることができます。画像の名前に日付を含めると、日付などに応じて画像をさまざまなアップロードフォルダに簡単に並べ替えることができるので便利です。
最善の策は、ハッシュ関数を使用して、使用できるランダムな文字列を生成することです。たとえば、PHPでは次を使用できます。
$filename = md5('SOME RANDOM STRING'.rand(0,200000).time());
MD5は、ファイル名の衝突を引き起こす同じランダムな文字列を生成することがありますが、これが発生する可能性は非常に低く、その場合は、名前の生成を再度実行するだけです。つまり、2回続けて衝突します。非常にありそうもないです。
'SOME RANDOM STRING'を、自分だけが知っていてサイトで使用できるものに変更してください。これは「サイトソルト」と呼ばれるものです。つまり、外部の人は、生成するためにミックスに入れたすべてのものを予測してリバースエンジニアリングすることができないため、生成されたファイル名の名前を推測するのがはるかに困難になります。それ。
それがお役に立てば幸いですか?