我正在考虑编写自己的身份验证脚本,但我对安全性知之甚少.
从我阅读的文章来看,它看起来通常涉及用盐哈希密码并将其存储在数据库中.然后,当用户请求登录时,密码被哈希并与数据库进行比较.如果匹配,则用户的数据存储在$ _SESSION中.
但是,我不知道这是否安全.我读了一些关于在数据库中存储会话密钥的内容,但我不确定它是如何工作的,或者如何实现它.
有人可以解释如何实现安全身份验证吗?
另外,对于我可以合并的PHP身份验证库是否有任何建议,这些建议易于学习而不是自己编写?
在Symfony中,我使用Doctrine_Query来查询数据库
$q = Doctrine_Query::create()
->from('User u')
->where('u.username = ?', $username)
->andWhere('u.password = ?', $password);
$user = $q->fetchArray();
Run Code Online (Sandbox Code Playgroud)
问题是结果存储在一个数组中.有什么方法可以让它获取一个对象而不是一个数组?
另外,有没有其他方法可以在Symfony中查询数据库,还是我必须使用Doctrine的函数?
可能重复:
当用户登录时,我需要在php会话中存储什么?
我想使用php会话来记录用户.一旦我验证了他们的身份,我会在会话中存储他们的user_id和has_logged_in.为了验证他们是否已登录,我将检查他们的用户ID是否已设置且has_logged_in是否为true.偶尔,我会通过session_regenerate_id(true)重新生成会话ID.这是否足够安全,还是我必须采取进一步措施来防止劫持和其他会话安全漏洞?