我正在使用perl中的登录表单。我希望限制3次无效登录尝试30分钟。我应该以哪种方式使用。让我知道存储无效登录尝试的位置。
答案 0 :(得分:0)
您有几种不同的选择:
Cookie - 最不安全,因为不同的浏览器,清除Cookie等都会对此产生影响。不推荐,但列出完整性。
数据库 - 如果您使用的是数据库,则可以创建一个记录每次失败的登录尝试的表。在此表login_attempts
中,您可以记录以下值:date
,username
。然后在任何尝试登录期间(伪SQL )SELECT COUNT(*) FROM login_attempts WHERE username = '$the_user_name' AND date BETWEEN '$now' AND '$now-30m'
。如果返回值>> 3,则拒绝登录。确保在用户名和日期降序上创建聚簇索引。如果您担心空间,那么您可以找到一份每晚运行的工作,并删除日期早于8小时的任何记录。 (虽然保留了它作为审计日志。)
文件系统 - 这个选项是如此拜占庭我不打算深入描述它,假设你已经有了某种数据库后备存储。如果你必须走这条路线,那么它看起来像上面的数据库解决方案,没有SELECT语句,并且可能涉及用户名作为目录,其中包含每个登录尝试的文件以及(mtime + 30m< now)必须的位置是的,允许成功登录。您当然需要确保为磁盘启用了mtime,或者在文件中记录时间。