去年十月,漏洞大堆我帮一个做跨境电商的漏洞大堆朋友看他的独立站。打开后台那一刻,漏洞大堆我差点以为自己误入了什么漏洞展览馆。漏洞大堆商品详情页的漏洞大堆价格可以改成负数,下单后系统居然倒找他钱;用户头像上传接口没做任何校验,漏洞大堆他试着传了个PHP文件,漏洞大堆服务器直接当脚本执行了。漏洞大堆最离谱的漏洞大堆是支付回调,他把请求里的漏洞大堆金额从199改成1,订单状态照样变成"已支付"。漏洞大堆
他站在我旁边,漏洞大堆脸色从期待变成铁青。漏洞大堆我问他这套系统谁写的漏洞大堆,他说找了个外包,漏洞大堆三万块包干,两个月交付。我翻了翻代码,发现用的是五年前就停止维护的框架,数据库查询全是字符串拼接,连最基本的参数化都没做。那个外包估计连SQL注入是什么都不知道,更别提什么CSRF、XSS这些概念了。
漏洞这东西,平时看不见摸不着,一旦被人盯上就是灾难。我另一个在安全公司上班的朋友说过一句话:大部分中小企业的系统,在真正懂行的人眼里就跟没锁门一样。他们公司做渗透测试,十个小程序里八个能直接拿到管理员权限,剩下两个需要多花半小时。这不是技术难题,是压根没人管。
有个做在线教育的朋友更惨。去年三月,他平台上的用户数据被打包挂在暗网上卖,两万条记录,包括姓名、手机号、身份证号。他接到通知的时候还在睡觉,爬起来一看,数据库里多了个从没见过的管理员账号。攻击者从注册接口的验证码逻辑漏洞进去的——验证码是前端生成的,后端只检查格式对不对,根本不验证内容。这等于把钥匙插在门上,还贴了张纸条写着"欢迎光临"。
为什么会这样?我观察下来,核心就一个字:快。产品要快速上线,功能要快速迭代,安全测试?那是上线之后的事。上线之后呢?又忙着做新功能。循环往复,漏洞就永远排在下个版本的计划里。有个创业公司的CTO跟我说过实话:我们知道有漏洞,但修漏洞不产生GMV,老板不关心。等真出了事,再找安全公司救火,花十倍的钱。
更麻烦的是,很多开发者根本不具备安全意识。我面试过不少人,简历上写着"精通Web开发",问他们怎么防XSS,回答是"用框架自带的转义"。再问框架转义在什么场景下会失效,就答不上来了。学校不教,培训班不讲,公司里也没人带。最后就是大家一起写漏洞,谁也别笑话谁。
前几天那个跨境电商的朋友又来找我,说网站被人拖库了,用户手机号全泄露。我问他上次那些漏洞修了没,他沉默了一会儿说,后来忙着搞促销活动,忘了。我没再说什么。有些坑,不自己掉进去一次,永远觉得离自己很远。而那些漏洞,就安安静静地待在那里,等着下一个路过的人。