【问题标题】:Is Storing Cookies in a Database Safe?将 Cookie 存储在数据库中安全吗?
【发布时间】:2011-02-10 03:10:43
【问题描述】:

如果我使用mechanize,例如,我可以为网站创建新的谷歌分析配置文件。我通过以编程方式填写登录表单并将 cookie 存储在数据库中来做到这一点。然后,至少在 cookie 过期之前,我可以访问我的分析管理面板,而无需再次输入我的用户名和密码。

假设您无法以任何其他方式创建新的分析配置文件(使用 OpenAuth 或任何其他方式,我认为它不适用于实际创建新的 Google Analytics 配置文件,Analytics API 用于查看数据,但是我需要创建一个新的分析配置文件),将 cookie 存储在数据库中是一件坏事吗?

如果我确实将 cookie 存储在数据库中,它可以非常容易地以编程方式登录到 Google Analytics,而无需用户访问浏览器(也许应用程序具有显示“用户,您可以安排挂钩”的功能这会为您创建的每个新域创建一个新的分析配置文件,只需输入您的凭据一次,我们就会让您保持登录并保持安全”)。否则我必须不断地转移电子邮件和密码,这看起来更糟。

那么在数据库中存储 cookie 安全吗?

【问题讨论】:

    标签: security cookies session passwords storage


    【解决方案1】:

    首先,这是一种有缺陷的方法,因为经过身份验证的会话最终会过期,您与 Google 的连接也会中断。此外,您应该使用Google Analytics API

    然而, 将会话 ID 存储在数据库中是不安全的。

    这不是一个公认的漏洞,至少我不知道。但它使攻击您的应用程序变得更加更容易。 SQL 注入非常常见,您应该设计您的应用程序以限制任何给定漏洞造成的影响。这就是密码被散列的原因,因为它延迟了攻击者获得完全妥协的时间。存储可以立即使用的会话 ID 会使针对您的应用程序的 SQL 注入漏洞更加严重。

    我不确定您使用的是什么平台,但我假设您使用 Linux,因为您关心安全性 :)。我建议将用户名/密码存储在文件中。您应该调整文件的权限,例如chmod 700 file_name,并确保该文件归您的 Web 服务器所有:chown apache:apache file_name。如果您使用 MySQL,请确保从 ruby​​ 应用程序的用户帐户中删除 file_priv(文件权限)。文件权限真的很讨厌,因为它允许攻击者通过sql注入读取和写入文件。

    【讨论】:

    • 加 1 - 从不将会话 ID 存储在数据库中 - 这是帐户接管的快捷方式。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-28
    • 2011-03-17
    • 1970-01-01
    • 2011-01-07
    相关资源
    最近更新 更多