将Cookie存储在数据库中是否安全?

时间:2010-04-20 12:38:06

标签: security cookies session passwords storage

如果我使用mechanize,我可以为网站创建新的Google Analytics分析。我通过以编程方式填写登录表单并将cookie存储在数据库中来完成此操作。然后,至少在cookie过期之前,我可以访问我的分析管理面板,而无需再次输入我的用户名和密码。

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

如果我将cookie存储在数据库中,则可以非常轻松地以编程方式登录Google Analytics而无需用户访问浏览器(也许应用程序具有“用户,您可以安排挂钩”的功能这会为您创建的每个新域创建一个新的anaytics配置文件,只需输入您的凭据一次,我们就会让您保持登录并安全“)。否则我不得不继续转移电子邮件和密码,这似乎更糟糕。

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

1 个答案:

答案 0 :(得分: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注入来读取和写入文件。

相关问题