起了个大早赶了个晚集
昨儿接了个私活儿,甲方非要我给他那破安卓登录界面加个“绝对安全”的招牌。我心说这年头谁还敢吹绝对安全?但钱给到位了,硬着头皮撸袖子开干。
开局就踩了个大坑
先打开他们传过来的源码包,差点没把咖啡喷屏幕上。密码框居然明晃晃用EditText裸奔!
- 第一反应抄起键盘加了行 android:inputType="textPassword"
- 扭头又塞了个ToggleButton让用户能切显示/隐藏密码
- 测试机上手一点,切换时密码居然在半空停了一秒才打码!赶紧翻了翻代码:原来傻乎乎直接调了setTransformationMethod,麻溜改成用包了下
暴力破解测试整懵了
抓过工作室里最破的红米Note4,装了HttpCanary开始抓包。输错三次密码故意锁账户,结果你猜咋着?请求头里lockStatus=false写得清清楚楚!吓得我当场给后端兄弟打电话骂街,这不明摆着让黑客写脚本狂刷吗?逼着他们在服务器端校验锁状态才消停。
加密这事儿差点翻车
看他们用了AES加密刚想夸两句,突然发现密钥居然用SharedPreferences存!这跟把家门钥匙挂门把手有啥区别?抄起AndroidKeyStore怼进去,折腾半天发现红米Note4系统版本太低不支持…骂骂咧咧改成启动时让后台下发密钥,用完了立马从内存清掉。
意外收获了个离谱漏洞
半夜两点眼皮打架的时候,手贱点了登录界面的“忘记密码”。跳转的网页地址居然是http://开头!打开电脑顺着网址摸过去,好家伙,重置密码页面连个验证码都没有…第二天甲方会议室里直接拍了桌子,全站上了HTTPS不说,密码重置流程整个重做。
测试总结
折腾一周整出个24页测试报告,光密码安全这块就列了八个大坑。最讽刺的是,所有问题解决之后甲方突然问我:“搞这么复杂干嘛我们就是个卖水果的APP”。
后记:收到尾款第三天,新闻弹出他们竞争对手用户数据泄露的消息。老板连夜打电话问能不能加钱做渗透测试,我默默把报价单翻了三倍。





