0

ユーザーが自分に厳密に関連するいくつかのファイルをアップロードできるようにしたいと思います。リソースは、Web サービスに対して認証されている場合にのみ表示されます。したがって、添付ファイルも表示されます。

Paperclip を使用すると、ファイルのアップロード場所を指定でき、次のようにファイル名を難読化することもできます。

has_attached_file :avatar, {
    :url => "/system/:hash.:extension",
    :hash_secret => "longSecretString"
}

それでも、すべてのファイルは同じ場所に保存されており、ブルート フォース攻撃によって、可能性は低いものの、自分のものではないファイルが表示される可能性があります。

見てはいけない人にファイルが見られないように保護する方法はありますか?

4

2 に答える 2

1

これらのオブジェクトのオブジェクト/モデルレベルの承認については、 canable 、rubyツールボックスのrails_authorization、および次の質問を参照してください。

Paperclipで問題が発生した場合は、rubyツールボックスのrails_file_uploadsからcarrierwaveなどを確認できます。Carrierwaveは、ファイルシステム、DB、またはDB管理のファイルシステムストレージでのストレージをサポートしています( postgresを使用している場合は、carrierwave-postgresqlでのラージオブジェクトのサポートなど)。

于 2013-02-26T14:16:20.950 に答える
1

アプリの /public ディレクトリ以外の場所にファイルを保存するように paperclip を構成できるはずです。アプリケーションで取得する必要がある場合は、その時点で必要な認証と承認を適用できます。

もう 1 つの方法は、アップロードされたファイルをファイルシステムではなくデータベースに保存することです。これにより、アップロードされたファイルは、データベースに保存する他のアプリケーション データと同じくらい安全になります。

于 2013-02-26T14:08:50.353 に答える