我使用私人访问在PHP中构建应用程序。有登录两种方式:在PHP中使用cookie登录安全问题
- 登录方式:用户名和密码
- 饼干:饼干记得用散列信息(用户名,盐等)
为了防止机器人做了畜生强制攻击,服务器创建一个会话(一个带有session_start的cookie),在4次尝试之后,用户必须等待5秒才再次尝试。我使用超全局变量$ _SESSION来检查某人尝试连接的次数。
我的问题是关于不允许cookies的用户。在这种情况下,他们不会每4次尝试等待5秒钟。我有点困惑关于防止暴力破解的最好方法:
- 在检查一个IP有多少次试图
- 或者简单地防止用户在没有会话cookie从连接连接数据库创建一个登录表
感谢,
您的#2无法正常工作,因为* everyone在第一次登录尝试时将拥有* no session cookie *。限制尝试的唯一解决方案是跟踪每个IP;在这种情况下,Cookie根本没有任何作用。 – deceze 2014-10-01 12:51:52
在会话中存储登录尝试是毫无意义的 - 因为我只需要重新开始一个新会话即可。 (和“获得一个新的会话”基本上只需要发送一个不同的随机会话ID。)您应该将该信息存储在用户对象(在您的数据库中)。 – CBroe 2014-10-01 12:53:02
好的,谢谢,我想每个人在第一次尝试时都会有一个会话cookie,因为它是在checkLogin脚本的开头创建的。事实上,一个PHP会话只需要发送一个随机会话,没有想到这一点。在数据库中存储信息看起来不错。谢谢, – Yoan 2014-10-01 13:01:38