我已经为CodeIgniter构建了一个自定义身份验证系统(我知道有各种第三方库可用,但这是为了我自己的利益)但是我担心我会遗漏一些明显可能导致整个事情失败的东西。
我使用CI会话(通过数据库)并加密cookie值以进行一些可能毫无意义的混淆。登录通过SSL进行(并且cookie被修改为仅安全)。我也使用phpass来存储密码以进行存储,尽管这在这里并不重要。这个部分可能存在一个薄弱环节,但主要关注的是页面到页面的检查基本上包括if is_logged_in = true
类型方法及其在会话中的用户名。这一点让我担心,因为它看起来有点过于“简单”。这种方法很脆弱吗?我应该计算一个逐页的哈希,例如用户代理或其他什么,并确保它们匹配?
任何指针都会非常感激。就像我说的那样,我知道预先存在的解决方案,但我正在努力向我学习一些知识:)
答案 0 :(得分:3)
你提到的一切都很好。不过我对phpass不熟悉。确保在哈希密码时使用盐。
if_logged_in = true
检查就足够了,因为会话数据存储在服务器端。检查诸如用户代理之类的事情的原因是为了帮助防止会话劫持,其中一个人获得另一个人的会话ID。
答案 1 :(得分:2)
P.S:我不是安全专家所以我更喜欢使用安全专家检查的系统:openid,facebook connect,twitter(oauth),google signin等
但这是我的清单(我可以想到):
$_SESSION['is_logged_in']
。 $var = filter_var($_SESSION['is_logged_in'], FILTER_VALIDATE_BOOLEAN, FILTER_NULL_ON_FAILURE);
AGAIN 您应该对来自服务器的所有输入执行此操作,因为它们不安全。最好的方法是使用白名单而不是黑名单。因为有可能你会错过一些东西。答案 2 :(得分:0)
我不熟悉phpass,但检查它是否使用MD5,因为如果它确实那么它就不够好了。使用bycrypt http://www.memonic.com/user/pneff/id/1qHCT