【问题标题】:Security when using Cookies to Remember Me使用 Cookie 记住我时的安全性
【发布时间】:2011-06-26 14:43:39
【问题描述】:

我在 PHP 中实现了一个登录类,并希望创建一个 记住我 类型的功能,这样用户就不必每次访问都登录。我对此进行了一些研究,并准备使用 PHP setcookie(...) 编写它,但随后浏览了此页面:How to Create 'Remember Me' using jquery , store cookies。我本来打算用 PHP 写这个,因为这是我的强项,但是这个页面让它在 js 中看起来很简单:http://www.quirksmode.org/js/cookies.html

我正在寻找有关每种方法的陷阱的一点指导,更具体地说,是与安全相关的问题。我只是想确保通过提供此类功能不会使任务复杂化或打开任何漏洞。

谢谢,克里斯

【问题讨论】:

  • 这是“如何设置 cookie?”问题或“如何实现记住我功能?”问题?

标签: php javascript login


【解决方案1】:

OpenID、facebook 连接、twitter 登录

我建议您不要正确(阅读下面的 cookie 记忆信息)您自己的登录系统,因为编写一个安全系统是困难的(存储密码安全是困难的)。它还为您节省了大量的编码。例如,当您使用 google 在我的openid example 登录时,您可以告诉 Google 记住您 30 天。我的示例中使用的代码可以在 my github page 找到。

Http_only

您应该使用http-only cookies 来保护自己免受cookie 窃取(尽量不要使用来自javascript 的cookie)。 php 函数 setcookie 也有一个http-only 标志。对于会话,您可以使用以下方式实现此目的:

<?php
ini_set("session.cookie_httponly", 1);
// or
session_set_cookie_params(0, NULL, NULL, NULL, TRUE);
?>

不要在 cookie 中存储数据

此外,您应该在 cookie 中存储尽可能少的信息。从数据库(会话)中获取数据。我认为您可以轻松完成 rememberme cookie 设置 expire of your sessions 任意高,但如果您问我,不要太高。

有趣的阅读

这也是提高会话安全性的非常有趣的读物:http://web.archive.org/web/20120417214604/http://segfaultlabs.com/files/pdf/php-session-security.pdf

【讨论】:

    【解决方案2】:

    与首先在服务器端设置相比,在服务器上创建标识令牌,将其发送到客户端并使用 Javascript 设置并没有多大意义。

    更重要的是,使用 Javascript 使其与更少的客户端兼容、更不健壮且更不安全(因为您不能使用 HTTPOnly cookie)。

    【讨论】:

      【解决方案3】:

      主要问题是,当您的网站通过非加密通道(常规 HTTP、开放 WiFi 网络)使用时,每个人都可以拥有该 cookie 并获得代表您的用户登录的能力。

      保护方法很少:

      • 在该 cookie 中编码浏览器/工作站特定的数据,
      • 一切都使用 HTTPS,
      • 使用其他存储(不是 cookie) - 使用 Firesheep 的脚本小子尝试捕获 localStorage 数据的可能性较小。

      另外,正如 Gumbo 提到的(他的评论现在已经消失了,我不知道为什么),这适用于任何基于会话的身份验证。因此,您的 PHP 会话具有相同的漏洞(因为它仍然以某种方式基于 cookie)。

      【讨论】:

      • 我会说它适用于通过不安全通道进行的任何客户端-服务器身份验证。
      • 请注意,记住我 cookie 的安全性不亚于常规登录方法。通过未加密的连接发送凭据对于用户/密码身份验证和 cookie 身份验证都是不安全的。
      猜你喜欢
      • 1970-01-01
      • 2015-07-27
      • 2012-12-04
      • 2015-02-20
      • 2017-12-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多