JavaScript-特殊用户登录页面功能设计思路

JavaScript-特殊用户登录页面功能设计思路

灵芸 发布于 2017-01-20 字数 371 浏览 979 回复 1

现在有这么个用户登录需求,登录页面有用户名、密码还有验证码,要求当同一浏览器下登陆,默认第一次登录不需要输入验证码,当第一次登陆失败时,则需要输入验证码;也就是说当用户第一次登录时验证码不显示(不需要输入),当第一次填写的信息失败时,重新让用户填写登录信息,这时候需要输入验证码。

这样的一个需求,考虑前段安全和性能情况下,前段和服务器端(php)如何来实现呢

如果你对这篇文章有疑问,欢迎到本站 社区 发帖提问或使用手Q扫描下方二维码加群参与讨论,获取更多帮助。

扫码加入群聊

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

归属感 2017-07-12 1 楼

单独用SESSION是不够安全的。比较安全的方法是用用户IP来进行比较,或者结合IP和SESSION。
用SESSION不安全的原理在于SESSION的标识符记录在Cookies里面。用户只要清空Cookies,SESSION就消失了。于是一个恶意的暴力破解爱好者只要当密码错误时就清空Cookies重来,验证码就形同虚设了。
可以在提交表单里面加一个Token验证字段(不如说应该这么干,这是防范CSRF的必要手段),Token在SESSION里面和当前页面里各有一个备份,然后在提交之后和SESSION里的版本比较。但这也很容易破解,攻击者只要先清除Cookies,然后访问登录页刷新Token,就依然为所欲为了。

所以最安全的是验证用户IP。维护一个数据表,里面是IP、LastFail两个字段,IP是主键;每次访问前读一下数据库,失败的时候更新LastFail为当前时间。这样要安全一些。虽然仍然可以用代理服务器集群破解,毕竟IP数量是有限的。