【问题标题】:Are cookies safe in a Heroku app on herokuapp.com?herokuapp.com 上的 Heroku 应用程序中的 cookie 是否安全?
【发布时间】:2013-03-09 07:38:50
【问题描述】:

我正在开发一个应用程序,我将部署在 Heroku 上。该应用程序仅在另一个站点上的iframe 内使用,因此我不在乎域名。我计划在example.herokuapp.com 上部署我的应用程序,而不是在example.com 上使用自定义域。

我的应用使用 cookie,我想确保其他人无法操纵我的 cookie 以保护我的应用免受 session fixation 和类似攻击。如果attacker.herokuapp.com 能够为herokuapp.com 设置cookie,浏览器将无法保护我,因为herokuapp.com 不是public suffix。有关该问题的详细说明,请参阅 http://w2spconf.com/2011/papers/session-integrity.pdf

我的问题是:当浏览器无法保护我的用户时,Heroku 会通过阻止 herokuapp.com 的 cookie 来做到这一点吗?

【问题讨论】:

    标签: cookies heroku cross-domain


    【解决方案1】:

    只是想为像我一样遇到此问题的任何人发布更新。我正在解决一个类似的问题,除了我想有目的地允许从两个不同的 Heroku 应用程序访问同一个 cookie。

    “herokuapp.com”和“herokussl.com”现在位于Public Suffix List 上,因此如果为其中一个域设置了cookie,应该是安全的。我最终不得不使用自定义域来在两个应用程序之间共享 cookie。

    Heroku 也发布了一篇关于该主题的文章:https://devcenter.heroku.com/articles/cookies-and-herokuapp-com

    【讨论】:

      【解决方案2】:

      我刚刚尝试从我的 Heroku 应用程序中添加一个带有响应标头 Set-Cookie: name=value;Path=/;Domain=.herokuapp.com 的 cookie,但令我失望的是,我可以在浏览器中看到完整的标头。因此 Heroku 基础架构不会检测并删除此跨应用超级cookie。

      我看到了三种可能的方法来保护 Heroku 应用免受跨应用超级cookies:

      • 根本不使用 cookie。
      • 使用自定义域。
      • 验证每个 cookie 是否确实由您的应用设置,并通过检查 the X-Forwarded-For header 将其限制为客户端的 IP 地址。

      我对 Heroku 的功能请求是他们应该过滤通过其 HTTP 路由的 HTTP 响应,以便托管在其基础架构上的应用程序无法使用 Domain=herokuapp.com 设置 cookie。

      【讨论】:

        【解决方案3】:

        在我看来,只要您将 cookie 设置为 example.herokuapp.com,那么 cookie 就不会被操纵。 cookie 只会呈现给在example.herokuapp.comherokuapp.com 上运行的应用程序(没有应用程序运行)。

        【讨论】:

        • 我不确定我是否理解您的意思。是的,如果我已经为 example.herokuapp.com 自己设置了 cookie,我是安全的,但是当我收到包含 cookie 的请求时,我无法知道我是否在 example.herokuapp.com 上自己设置了它,或者如果它是由其他人在 herokuapp.com 上设置的。如果在你的最后一句话中表示“和”而不是“开”,那么我的应用程序设置的 cookie 将不会呈现给裸 herokuapp.com 域,但我担心的不是我的应用程序设置的 cookie。
        • 你为什么担心其他网站设置的cookies呢?如果您将敏感信息存储在 cookie 中,或者如果 cookie 用于存储会话信息,您应该对 cookie 进行加密然后签名。您可以在此处阅读详细信息:github.com/appharbor/AppHarbor.Web.Security
        • 对 cookie 进行签名和加密并不能防止重放攻击。 Carol 访问了我的网站并获得了一个会话 cookie。 Alice 访问了 Carol 的站点,该站点设置了我为 herokuapp.com 域提供给 Carol 的会话 cookie。然后 Alice 访问我的站点,我的站点将收到 Carol 的会话 cookie,并认为她是 Carol。在我的网站上,这意味着 Alice 可能会使用 Carol 的用户帐户自动登录,并且她可能会输入一些私人数据而不会注意到她已登录到 Carol 的帐户。
        • 嗯,我不关注。如果您在 myapp.herokuapp.com 域中设置您的 cookie,那么它不会出现在其他任何地方,也没有人能够重放它。
        • 你说的没错,我的cookies不会出现在其他任何地方,但我担心的是别人的cookies会出现在我面前。你知道为什么浏览器在他们的 cookie 处理中使用公共后缀(参见 RFC 6265 tools.ietf.org/html/rfc6265)吗?
        猜你喜欢
        • 1970-01-01
        • 2022-01-08
        • 2019-02-04
        • 1970-01-01
        • 1970-01-01
        • 2022-07-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多