security - 将 Cookie 存储在数据库中安全吗?

标签 security cookies session passwords storage

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

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

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

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

最佳答案

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

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

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

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

关于security - 将 Cookie 存储在数据库中安全吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2675105/

相关文章:

javascript - 用 JavaScript 动态加载 JavaScript

mysql - 防止第三方连接到 SQL 数据库(来自 config.php 文件)

php - PHP 中奇怪的 $_SESSION var 行为

python - 存储用于编码/解码 token 数据的 JWT key 的安全方式

node.js - 为什么未发送 Set-Cookie header ? -- 使用 Restify

node.js - 仅 http cookie + token : double job?

c# - 如何在 cookie 中安全地存储 Unicode 字符?

session - 粘性 session / session 亲和性负载平衡策略的优缺点?

php - 为登录用户 PHP MYSQL 添加异常或条件

flash - "empty"crossdomain.xml 强制执行什么策略?