2016-06-01 11 views
0

私はpaperclipを使用して、Aws s3(このガイドに続く:https://devcenter.heroku.com/articles/paperclip-s3)に直接ファイルをアップロードしています。Rails Paperclip S3添付ファイルのURLを隠す

以下に示すように、ユーザーは "attachment.file.url"メソッドを使用してブラウザでファイルを表示できます。ユーザーにs3のURLを表示するのはセキュリティ上の脆弱性ですか?もしそうなら、アプリケーションにファイルを最初にストリーミングせずにこのURLを隠す方法や、「download_file」コントローラのアクションはありますか?

production.rb

Rails.application.configure do 
    config.paperclip_defaults = { 
    storage: :s3, 
    s3_credentials: { 
     bucket: ENV.fetch('S3_BUCKET_NAME'), 
     access_key_id: ENV.fetch('AWS_ACCESS_KEY_ID'), 
     secret_access_key: ENV.fetch('AWS_SECRET_ACCESS_KEY'), 
     s3_region: ENV.fetch('AWS_REGION'), 
    } 
    } 
end 

attachment.rb

class Attachment < ActiveRecord::Base 
    belongs_to :upload, polymorphic: true 

    has_attached_file :file 
    validates_attachment :file, content_type: { content_type: ["image/jpeg", "image/gif", "image/png", "application/pdf", "application/vnd.ms-excel",  
      "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", 
      "application/msword", 
      "application/vnd.openxmlformats-officedocument.wordprocessingml.document", 
      "text/plain"] } 
end 

S3のURLがとにかくのdevのツールを使用することができます誰にも見ることができます

<h5>File Uploads</h5> 
    <ul> 
    <% @attachments.each do |attachment| %> 
     <li> 
     <%= link_to attachment.file_file_name, attachment.file.url, :target => '_blank' %> 
     </li> 
    <% end %> 
    </ul> 
    <%= link_to "Add Files", new_attachment_path(:upload_type => 'Team'), class: "btn btn-md" %> 

答えて

0

ビューので、それがあるさらしますセキュリティ上の脆弱性はありません。何人かは、それが悪いUXだと主張するでしょうが、それは別の時の議論です。