0

我正在制作一个新的登录系统来练习我的 PHP,因为我制作的最后一个登录系统非常不安全,因为我发现我学到的越多......

无论如何,基本上我对如何真正使其安全有点困惑。很多关于这种状态的类似问题的答案是不需要按页面验证用户的;他们只需要获得授权。但是,例如我想让用户在更改帐户密码时强制所有当前登录帐户的用户注销(实际上更改密码的人将保持登录状态,即一个足够简单的任务......)。

我能想到的唯一方法是密码是否以某种方式存储,以便可以将其与数据库中的用户凭据进行比较。

本质上,因此我有几个问题:

  1. 为什么大多数人认为不值得让登录系统以这种方式工作?
  2. 我忽略了一些可笑的简单方法吗?(无论哪种方式,如果有人可以指导我采取一种方法,我将不胜感激!)
  3. 当让登录系统记住您时,cookie 中应该包含什么内容才能确保安全并仍然记住您?

谢谢!

4

2 回答 2

1

有一种基本的方法可以做到这一点:

登录后 - 您将会话 ID、盐和用户密码哈希连接成一个字符串,然后 md5 对其进行哈希处理。将其存储在名为“auth”的cookie中。

现在,当他们请求一个页面时,您只需从数据库中选择用户密码、会话 ID 和 salt =“auth”cookie 的 md5 哈希值。这样,如果没有匹配,则要求用户登录。

于 2012-04-28T04:21:04.740 回答
1

良好的安全性依赖于多个级别的身份验证......将身份验证数据存储在会话和 cookie 中以及加密密码等。

回答你关于这如何工作的问题。

您可以构建一个基本身份验证类,在经过身份验证的用户之后,存储一个 cookie 并设置会话变量,包括密码哈希。无论您使用哪种方法来验证用户在每个页面上都经过身份验证,都可以检查数据库中的密码与哈希值的比较。如果它已更改,则身份验证将失败。

您可以确保通过 https 连接设置 cookie。但是,如果它不是 https,它不会设置 cookie。setcookie 函数中还有一个参数可以让您将 cookie 限制为仅 http,因此 javascript 无法像跨站点脚本等那样获取 cookie。 http://php.net/manual/en/function.setcookie.php

安全就是要了解事物的工作原理以及如何利用它。

于 2012-04-28T04:27:45.267 回答