2012-04-28 64 views
0

我正在做一个新的登录系统练习我的PHP保护的登录系统,因为最后一个我做是相当不安全的,因为我已经有更多的我已经学会发现...以特定方式

无论如何,基本上我对如何真正使它安全有点困惑。关于这种状态的许多类似的事情的答案是没有必要的,每个页面对用户进行认证;他们只需要被授权。但是,举例来说,我想让用户强制当帐户密码更改时强制当前登录帐户的所有用户注销(实际上,更改密码的人将保持登录状态,这就是一个简单的任务...)。

我觉得这个工作的唯一方法是,如果密码被以某种方式存储,以便它可以在数据库中的用户凭据进行比较。

从本质上讲,我却因为这样几个问题:

  1. 为什么大多数人都认为这是不值得做一个登录系统以这种方式工作?
  2. 有没有一些可笑的简单方法可以做到这一点,我忽略了? (无论哪种方式,如果任何人都可以指导我这样做的话,我将非常感激!)
  3. 在做登录系统时,请记住你,cookie中应该包含什么内容才能保证它的安全,记得你?

谢谢!

回答

1

良好的安全性依赖于身份验证的多层次......在会话和cookie存储认证数据和加密密码等

回答你的问题,如何这会工作。

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

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

安全是所有关于如何理解什么工作以及如何可以利用。

1

有这样做的根本途径:

登录时 - 您连接的会话ID,盐和用户密码哈希成一个字符串,然后MD5哈希它。将它存储在一个名为“auth”的cookie中。

现在,当他们请求一个页面,你只需从数据库中选择其中的用户密码,会话ID和盐的MD5哈希=的“权威性”的cookie。这样,如果不匹配,则用户被要求登录。