互联网面试宝典

您现在的位置是: 首页 >

问题详情

用Redis和任意语言实现一段恶意登录保护的代码, 限制1小时内每用户ld最多只能登录5次

面试宝典 2023-06-12 Web前端开发工程师 98
以下是使用Python和Redis实现的恶意登录保护代码:

```python
import redis

# 创建Redis连接
redis_conn = redis.Redis(host='localhost', port=6379, db=0)

def check_login(username):
# 获取当前用户的登录次数
login_count = redis_conn.get(username)
if login_count is None:
# 如果没有记录,则创建一个记录,初始值为1,有效期1小时
redis_conn.setex(username, 3600, 1)
return True
elif int(login_count) < 5:
# 如果登录次数小于5,则增加1,并更新有效期
redis_conn.incr(username)
redis_conn.expire(username, 3600)
return True
else:
# 如果登录次数超过5次,则禁止登录
return False

# 测试代码
for i in range(6):
if check_login("user1"):
print("登录成功")
else:
print("登录失败")
```

此代码中,我们使用Redis实现了对恶意登录的保护。在用户每次尝试登录时,我们在Redis中查找该用户上次登录的时间和次数。如果该用户是第一次登录,则创建一个新的记录,并将次数设置为1,有效期为1小时;如果该用户已经登录过,则将登录次数加1,并更新有效期;如果该用户的登录次数已经超过5次,则禁止登录。在实际场景中,我们还可以将禁止登录的用户记录在Redis中,有效期为几小时或几天,以避免恶意攻击者不断尝试登录。