AWS S3/Ruby on Rails/ heroku: Security hole in my app

前端 未结 4 1719
别那么骄傲
别那么骄傲 2021-01-03 17:10

I have a route in my config which says that for a page, say /secure, there is a login required (done via authlogic). A before_filter in my controller takes care

相关标签:
4条回答
  • 2021-01-03 17:43

    If you use paperclip, you can restrict access to objects stored on Amazon S3 by expiring url. (if you don't mind to use expiring url)

    Here is the Wiki from thoughtbot/paperclip on GitHub

    https://github.com/thoughtbot/paperclip/wiki/Restricting-Access-to-Objects-Stored-on-Amazon-S3

    Also, there are some helpful links at the bottom of that page which you might not want to miss.

    0 讨论(0)
  • 2021-01-03 17:54

    The simplest and easiest solution is just to name your S3 assets with random, unguessable filenames, and then only expose the secret URLs to the people who should have access.

    This is how Facebook photos and many other sites work (there is no privacy or security beyond the obscurity of the individual filenames).

    0 讨论(0)
  • 2021-01-03 17:56

    You could try what is said on this page:

    http://thewebfellas.com/blog/2009/8/29/protecting-your-paperclip-downloads

    The specficics are under the section "No more streaming, time for a redirection".

    Summary: S3 has four canned access policies, by using the authenticated-read policy S3 provides a way to generate an authenticated URL for private content that only works for a specified period of time.

    I haven't actually done this, so please let me know if it works for you. :-)

    0 讨论(0)
  • 2021-01-03 17:58

    Maybe I'm confused as to what you are trying to accomplish, but S3 has permissions access that require an encryption key to be in the url you provide the user. When using the aws-s3 gem, this option is enabled by default. Therefore, you should not be able to access the files unless the user is using the link with the encrypted key embedded in it. This would require you to make sure that the file is set to authorized access only.

    More info can be found http://amazon.rubyforge.org/ about the gem. Look for documentation related to Access control (I think "authenticated_read" is what you want).

    0 讨论(0)
提交回复
热议问题