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

问题描述:

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

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

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

那么存储cookies数据库安全吗?

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

但是, 存储数据库中的会话ID是INSECURE。

这不是公认的漏洞,至少不是我所知道的。但它使更容易攻击你的应用程序。 SQL注入非常普遍,您应该设计您的应用程序以限制任何给定漏洞带来的影响。这就是密码被哈希的原因,因为它延缓了攻击者获得完全的妥协。存储会立即使用的会话标识符会使SQL注入漏洞更加严重。

我不确定你在哪个平台上,但我会假设你在使用Linux,因为你关心安全:)。我建议将用户名/密码存储在一个文件中。您应该调整文件的权限,如chmod 700 file_name,并确保该文件属于您的网络服务器:chown apache:apache file_name。如果您使用MySQL,请确保您从ruby应用程序的用户帐户中删除file_priv(文件特权)。文件特权真的很讨厌,因为它允许攻击者通过sql注入来读写文件。

+0

加1 - 永远不会将会话ID存储在数据库中 - 这是帐户接管的快捷方式。 – rook 2016-05-25 22:43:09