【问题标题】:Cookies handling using javascript or Express.js or node.js?使用 javascript 或 Express.js 或 node.js 处理 Cookie?
【发布时间】:2012-10-12 03:10:04
【问题描述】:

我只想知道哪一种是处理 cookie 的最佳方式? 使用 Express.js? Node.js 还是客户端 javascript jquery?

我对安全观点有点困惑。

感谢您提供的所有帮助/信息。

【问题讨论】:

  • “处理cookies”是什么意思?详细说明。
  • 我只想处理“让我保持登录”复选框并将其状态存储在浏览器 cookie 中,以便下次不要求用户登录。
  • 我已经看到在 express.js 中处理 cookie 并使用 javascript document.cookies。所以我有点困惑哪个好,为什么?
  • 注意:使用document.cookies可以看到每个客户端cookie(带有httpOnly标志的cookie除外)。

标签: javascript jquery node.js express


【解决方案1】:

您应该在 cookie 中保留一些会话 ID,而不是实际数据(在大多数情况下都是如此,尤其是对于任何与用户相关的敏感数据)。

使用 cookie 的正确方法是:

  1. 让用户输入他的登录名/密码并选中“保持登录”复选框。
  2. 在服务器端,根据输入的登录名和密码,确定用户凭据是否有效。
  3. 假设凭据有效,创建一些随机 id 并在服务器端存储信息,这个给定的随机 id 与一些数据(一些用户 id、设置等)相关。
  4. 在服务器端,根据“让我登录”复选框的值,您将执行以下操作:如果选中了复选框,则创建应该在很远的将来某个时间(例如,100 年)到期的 cookie。如果未选中复选框,则将 cookie 设置为在浏览器会话结束或例如 1 小时后过期。请记住,用户可以在您发送 Cookie 后篡改其过期日期,但情况完全不同。
  5. 用户(客户端)正在接收您的 cookie,其中包含生成的 id。该 cookie 会在每次请求时由浏览器发送给您。
  6. 在服务器端,从客户端获取 cookie 后,检查您是否知道该 ID 以及它是否有效。如果是这样 - 从您的数据库或其他数据库中检索用户数据并对其进行操作。

【讨论】:

  • 非常感谢您的详细描述:)
  • 我还想问一件事。我怎样才能拥有复选框的轨迹。下次我点击页面时它会刷新复选框状态吗?:(
【解决方案2】:

Cookie 是与语言/平台无关的 HTTP 概念。因此,Node.js 是一个服务器端平台,而 Express.js 是一个 Node.js 的服务器端 Web 应用程序框架,而 jQuery 是一个客户端库。

从安全角度来看,您不应以纯文本形式存储 cookie 信息。另外,“you shouldn't allow client side scripts to set or read the cookie value”。如果您已经在使用 Express.js,那么我建议您使用 Express.js 设置和读取 cookie 以供您的应用程序注意,并确保您对 cookie 值进行加密。

【讨论】:

  • "并确保您加密 cookie 值" - 还要记住,将数据保存在 cookie 中并不是最聪明的主意,最好坚持保留一些 id(如果你愿意,可以使用会话 id)这将是您在服务器端检索会话数据的关键。
  • 感谢 Ramesh 提供的有效信息。您可以使用 express.js 分享或提供简单的 cookie 处理代码或链接吗?我使用 express.js 将名称存储在 cookie 中: response.cookie('name', 'tobi', { domain: '.example.com', path: '/admin', secure: true }); response.cookie('rememberme', '1', { expires: new Date(Date.now() + 900000), httpOnly: true });并获取 logger.info("request for cookies:",request.cookie.name);但它似乎不起作用并且给了我未定义的:(
  • @WTK 我完全同意你的看法。
  • 应该是logger.info("request for cookies:",request.cookies.name),cookies 复数
  • @AliHassan 我已经添加了我自己的回复,因为评论太长了。希望现在清楚了。
猜你喜欢
  • 2012-02-09
  • 2011-10-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-01
  • 2017-02-17
  • 1970-01-01
相关资源
最近更新 更多