php - 识别可疑登录的可靠方法有哪些?

标签 php javascript web-applications ip

我有兴趣在我的 Web 应用程序上实现一项功能,该功能可在用户上次访问后出现可疑登录时向用户发出警告。

我的下意识 react 是使用客户端的 IP 地址,但经过我的研究,这似乎是一个糟糕的主意。动态分配和 NAT 表明这是不可靠的。

我的第二个想法是使用地理定位服务。但我能找到的那些要么是基于 IP 的,要么超出了我的价格范围。

我的第三个想法是实现类似 Facebook 的“注册此设备”提示的功能,但我不确定它如何以可靠的方式工作。

对于我如何以合理的置信度识别设备或位置,有没有人有任何想法?

最佳答案

这取决于您的业务规则。您可以根据几个因素对其进行评分。

  1. IP不一样:+5
  2. 不在同一个子网:+10
  3. 不在同一个国家:+100
  4. 成功前 3 次或更多次尝试:+50
  5. 同时登录 2 个或更多:+50
  6. 与上次不同的浏览器:+5

等等

然后你可以设置这样的规则:

  1. 0-20:告诉用户下次成功登录。
  2. 21-50:开始让他们在两次登录之间等待 5 分钟。
  3. 51-100:锁定帐户并通过电子邮件确认强制他们解锁。

我会像 gmail 一样向他们显示最后登录日期和 IP。 Gmail 也有您可以查看的登录历史记录。

编辑: 这是一个非常古老的答案,仍然有一些观点。今天我可能会推荐一个 2FA 解决方案。 What is two-factor authentication?

关于php - 识别可疑登录的可靠方法有哪些?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14861213/

相关文章:

php - js 无法识别重音字符 onclick

php - 将元素 ID 传递到数组中以进行 POST 表单处理

sharepoint - 找不到新的 SPWebApplication 应用程序池帐户

java - 如何解决 netbeans 中的库引用问题? java

java - 为什么在调用 getWriter() 之后不能更新 HttpServletResponse header ?

php - 从数组中的每个字符串中提取一个或多个符合条件的子字符串

php regex - 干净的文件名

php - 如何根据另一个下拉选择来过滤下拉列表中的选项

javascript - OpenTok - 如何在 sessionDisconnected 上手动重新连接而不存在延迟连接

javascript - Skrollr:创建即时移动?