防止暴力

时间:2012-03-10 02:47:16

标签: php

  

可能重复:
  Preventing Brute Force Logins on Websites
  Limiting user login attempts in PHP

我想知道在登录表单中阻止暴力破解的最佳方法是什么。 意思是如何保存尝试次数和时间限制?会议会是一个好主意吗?

感谢。

2 个答案:

答案 0 :(得分:2)

您可以自动为每个访问您网站的人启动会话。然后在会话变量中,存储登录尝试次数以及是否被阻止,以及解锁时间。

处理登录时,如果密码和用户名不匹配且时间限制尚未到期且已超过尝试次数,则向用户显示一条消息。

您的数据库表可能如下所示:

sessions
==========
id
num_tries //Number of login attemps
block_expires //If they are blocked, when they can be unblocked.

此方法假定用户将采用会话cookie。他们可以通过清除他们的cookie来轻松解决这个问题。

为了减轻某些问题,你可以在这个过程中建立一些智慧:

  • 如果登录来自同一个IP地址,并且他们尝试访问的帐户不会更改,则会在一段时间内阻止帐户(而不是会话!)。

答案 1 :(得分:0)

讨论here

大家一致认为,您可以为每个尝试创建一个失败尝试的SQL表以及时间戳。然后,您将在失败的登录时查询,并检查每次使用cookie或查询的尝试次数和时间戳。