验证码设计中常见的安全问题

验证码在防止字典攻击和机器注册中起到关键作用,但常见的安全问题包括:客户端验证逻辑缺陷、验证码未过期可重复使用、向客户端输出敏感信息以及验证码强度不足。解决方案包括强制输入验证码、一次性有效并立即失效、增强验证码复杂性以及大型网站统一安全验证接口。
摘要由CSDN通过智能技术生成

验证码
验证码英文缩写为CAPTCHA,即:
完全自动化的公共图灵测试来区分计算机和人类
人机自动识别的图灵测试。
目前,图形验证码已经广泛应用于Web应用程序和客户端软件中。主要用于防止字典攻击(或暴力猜解)、机器注册等。
不幸的是,大多数开发人员都没有注意到这一点,只能应付过去。验证码设计中常见的安全问题有:
验证码有逻辑缺陷,可以被绕过,可以被逆转验证码过于简单,机器无法识别,如下所述。
第一个问题将验证逻辑放在客户端浏览器上
有些系统默认不显示验证码,只有在用户验证错误达到一定次数后才会显示验证码。
那么如何判断用户犯了多少次错误呢?没有经验的开发者可能会这样做:
在cookie中写入一个标志,例如loginErr = 1,然后将随后的错误加起来
问题是,如果攻击者提交没有cookie的HTTP请求怎么办?或者,如果攻击者反复提交而没有更新Cookie中的loginErr值怎么办?
因为程序没有办法获取Cookie/sessionID,所以它会假定攻击者是第一次访问。无论何时,验证码都不会出现!
问题2验证码未过期单个验证码可以重复使用
大多数时候,验证码对应于Web服务器上的会话值。
如果会话经过验证后没有失效,则会重复使用相同的验证码。
此时,验证代码就不再有用了。
攻击者的sessionID和cookie中的sessionID都是固定的一个验证码串,很容易破裂。
另一种常见的代码实现是通过重新下载验证码来更新会话。
开发人员常犯的一个错误是将更新会话的任务留给客户端浏览器。
比如302重定向,甚至可以通过js、meta Refresh重定向页面,引导用户重新下载验证码。
如果用户阻止了重定向࿰

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值