感谢某电商平台安全工程师feiyu跟我一起讨论这个漏洞的修复。以往在安全测试的过程中后台经常存在验证码不失效果造成的撞库问题,甚至在一些银行或者电商的登录与查存页面同样存在这个问题,一旦造成撞库无论对用户账号的安全性还是网站的负载都是巨大的挑战。其实造成问题的原因并不复杂,主要是研发在开发过程中缺少对安全的认知,造成的疏忽。
今天心血来潮自己写了个验证码来模拟下出现的问题,首先我们从前端页面开始分析:
验证码图片: width="100" height="30" /> 换一个
输入内容:
可以看出验证码是通过captacha.php来生成。
我们节选captacha.php的关键部分来分析:
$_SESSION['authcode']=$captch_code;
我们把生成的captch_code以文字形式存在一个临时的session中。
并在前端表单提交后,在form.php中验证POST的验证码是否与Session中的值一致。
if(isset($_REQUEST['autocode'])){
session_start();
if(strtolower($_POST['autocode']) == $_SESSION['authcode']){
echo 'right';
}else{
echo'wrong';