代码之家  ›  专栏  ›  技术社区  ›  unsafe_where_true

AWS S3/Ruby on Rails/heroku:我的应用程序中的安全漏洞

  •  1
  • unsafe_where_true  · 技术社区  · 15 年前

    我的配置中有一条路径,上面写着一个页面 /secure ,需要登录(通过authlogic完成)。我的控制器里有一个前置过滤器来处理这个问题。这很好,页面及其资源限制了通过应用程序的访问。

    但是,插入应用程序安全部分的任何资源都可以通过浏览器直接访问。换句话说 /安全 页面包含pdf文件等项。当通过应用程序保护资源时,可以从Internet上的任何位置访问这些pdf文件(例如URL): http://s3.amazonaws.com/my_bucket/images/1234/the_file_which_should_be_secure.pdf

    我可以在S3上进行细粒度的访问控制吗?我需要创建一个新的桶吗?理想情况下,我想在我的资源上设置一个标志,使其在互联网上不可见-不知道。

    欢迎任何建议。

    P、 org有一个过期的ssl证书,所以需要创建一个新的空帐户,因为我无法登录

    4 回复  |  直到 15 年前
        1
  •  4
  •   tfe    15 年前

    最简单和最简单的解决方案是用随机的、不可访问的文件名命名S3资产,然后只向应该有权访问的人公开秘密url。

        2
  •  5
  •   Adam21e    15 年前

    你可以试试这页上说的话:

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

    总结: S3有四个固定的访问策略,通过使用经过身份验证的读取策略,S3提供了一种为仅在指定时间段内工作的私有内容生成经过身份验证的URL的方法。

        3
  •  2
  •   Jim Chang    14 年前

    如果使用回形针,可以通过过期url限制对Amazon S3上存储的对象的访问。(如果您不介意使用过期的url)

    这是GitHub上thoughtbot/paperclip的Wiki

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

    此外,在页面底部还有一些有用的链接,您可能不想错过。

        4
  •  0
  •   Lukas    15 年前

    也许我对你想完成什么感到困惑,但是S3有权限访问,需要在你提供给用户的url中有一个加密密钥。使用aws-s3 gem时,默认情况下启用此选项。因此,除非用户使用嵌入了加密密钥的链接,否则您不应该访问这些文件。这将要求您确保文件设置为“仅授权访问”。

    可以找到更多信息 http://amazon.rubyforge.org/ 关于宝石。查找与访问控制相关的文档(我认为“authenticated_read”是您想要的)。