Django 实现有点安全的网站登录认证机制——口令爆破

这次讲一下登录认证机制中最常见的口令爆破漏洞

口令爆破

口令爆破其实就是攻击者对用户口令进行穷举尝试。在用户登录界面,攻击者通过遍历生成口令或者加载口令字典,进行多次登录尝试,直至把用户口令穷举出来,成功登录

因为一般能被成功猜测出的用户口令都是弱口令,所以口令爆破也称弱口令漏洞

klbp

口令破解的漏洞原理其实很简单,即网站未对用户登录认证的请求频率和次数进行限制,使得攻击者可以无数次地进行遍历口令登录。从理论上讲,只要加载的字典范围足够大,尝试的次数足够多,攻击者可以把任意用户的口令穷举出来

防护手段

防御口令爆破的方法很简单,我们对认证请求频率和失败次数进行限制,使攻击者不能无代价地进行口令尝试。如果攻击者进行口令爆破所需要付出的成本,高出其可接纳的范围,那么在一定程度上,我们达到了安全

同前面注册页面的用户枚举漏洞讨论的一般,我们可以通过增加验证码机制来辨别人和机器,从而限制自动化工具在认证请求处的使用,进而达到限制认证请求频率的效果

yzm

而对认证失败次数进行限制的方案又可分两种。一是把认证失败次数记录在数据库中和用户数据相关联的,这样可对单个用户的失败次数进行限制。当一个具体用户的口令错误次数达到某个值时,对其进行认证限制。如,在一段时间内不允许该用户再次进行登录尝试,或者直接永久冻结
另一种则是把认证失败的次数记录到 Session 中,如此可限制单个客户端上请求的认证失败的次数(基于 Cookie 判断)。当某个客户端上发起的认证请求(不管是不是同一个用户的登录尝试)失败次数到达某个值时(在一个 Session 有效期内),对该客户端上发起的认证请求进行限制

如下代码所示,

def login(request):
	if request.session.get('is_login', None):  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值