【问题标题】:App Engine session security issuesApp Engine 会话安全问题
【发布时间】:2012-11-21 01:46:41
【问题描述】:

我在应用引擎的会话中存储用户状态(登录/用户 ID)。知道其他用户 UserId 的用户是否可以操纵他们的 cookie 并以其他用户身份登录。

我应该采取什么措施来防止这种情况发生?

【问题讨论】:

    标签: java security google-app-engine session


    【解决方案1】:

    一个用户不能直接访问另一个用户的数据。但是,一个用户有办法窃取另一个用户的登录会话。但这不是 GAE 特有的。

    见:

    1. http://en.wikipedia.org/wiki/Session_hijacking
    2. http://en.wikipedia.org/wiki/Cross-site_request_forgery (CSRF)

    在开放的 wifi 热点上很容易发生劫持。一个常见的解决方案是使用SSL 托管您的网站。

    当用户登录您的网站并在同一浏览器中打开恶意网站时,就会发生 CSRF。有多种方法可以防止这种情况发生。一个常见的解决方案是在 HTML 表单中包含一个随机的validation token。另外,设置 HTTP 响应 header: X-Frame-Options: sameorigin 并检查请求标头 X-Requested-With 不等于非 ajax 命中的“XMLHttpRequest”。

    XSS 可用于使这些攻击更有效,因此也要防范它。

    一般来说,对于这些类型的攻击,请快速让您的用户sessions expire

    【讨论】:

      【解决方案2】:

      我不是安全专家。但是我学到了什么:

      • 使用 HTTPS
      • 不要使用框架
      • 在您的表单中为每个请求使用新的 CSRF 令牌
      • 并将您的状态保存在数据存储中,而不是使用会话 cookie 存储。

      【讨论】:

        猜你喜欢
        • 2011-01-21
        • 1970-01-01
        • 2011-10-31
        • 2013-10-28
        • 2011-09-13
        • 1970-01-01
        • 2011-02-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多