1

ユーザーに画像をアップロードさせたいのですが、私の計画では、簡単に参照できるように、ユーザー名にちなんで画像ファイルに名前を付けるだけでした。しかし、画像のアップロードを許可するほとんどのWebサイトは、通常、ファイルの名前に対してランダムな数字の文字列を生成することに気付きました。これを行うことには(セキュリティ)利点がありますか?それとも、開発者による無関係な決定ですか?

私にとって、ユーザー名を使用する利点は、ユーザーごとにデータベースに数字の文字列を保存する必要がなく、ユーザー名だけで画像を参照できることです。

4

3 に答える 3

3

セキュリティ上の主な懸念事項は「情報漏えい」です。たとえば、ユーザーが公に表示されないようにするオプションがある場合、命名規則を推測した攻撃者は、「非表示の」ユーザーの写真を取得できます。これはおそらくユーザーが望んでいるものではありません。

「1.jpg」から始まり、増加する数字のファイル名を使用すると、他の情報が漏洩します。ファイルを段階的に要求し、いつ 404 エラーが発生するかを確認することで、誰でもあなたのユーザー数を知ることができます。

ソフトウェア設計の観点から、多くの場合、ユーザー名を主キーとして使用したくありません。たとえば、ユーザー名は変更される可能性があります (特に、電子メール アドレスをユーザー名として使用する場合)。データベースの主キーは、(G)(U)UID のような不変で一意のものにする必要があります。これは、他のサイトのユーザーの写真を見るときに表示されるファイル名である可能性があります。

もちろん、ユーザーが複数の写真をアップロードできるようにする場合、主キーを使用しても機能しません。そのため、「規則」から選択する必要があります。たとえば、ユーザーごとに写真フォルダーを作成するなど、何らかの方法でそのフォルダーにある画像の数を調べるか、それらの画像パスをデータベースに明示的に保存します。どちらの場合も、ユーザーに主キーを使用することはおそらく不十分です...

于 2012-04-12T11:14:36.273 に答える
1

これは主に名前空間の問題だと思います。

URLをランダム化するホスト(私が知っている)は、ユーザーアカウントなしでアップロードを許可するため、あなたのアプローチは機能しません。ランダム化されたフォルダー/ファイルの名前付けを使用すると、同じファイル名を 2 回アップロードするユーザーの競合が最小限に抑えられます。

匿名のアップロードを受け入れる必要がまったくない場合は、ユーザー ファイルをどのように整理し、名前空間の衝突を回避するかは個人の好み次第だと思います...

于 2012-04-12T10:58:46.907 に答える
0

私はお勧めします - あなたに独自性を与えるものを選びましょう。たとえば、プロフィール写真をアップロードしようとしている場合、次のように名前を付けます。次にログインするときは、写真が画面から自分を見ていることを期待します。写真の名前は、ユーザーとしてme.jpgの私には関係ありません

Pavel_Janicek_me.jpgそのため、名前をorに変更してdflw00axxwe.jpgも問題ありません。自分の写真を見せる限り。

ユーザーが複数の画像をアップロードできるようにする場合は、番号付けを検討してください。名前を変更すると、次のエラーが解決されます。

  • 2 人の異なるユーザーがまったく同じ名前の写真をアップロードする
  • 1 人のユーザーが同じ名前の 2 つの異なる写真をアップロードします
于 2012-04-12T11:03:10.367 に答える