最近冲浪的时候看到一张截图,真是让我一愣一愣的,看完忍不住想给那位开发者磕一个:您是懂“用户体验”的,更是懂“黑灰产”业务的。

APP自带撞库功能的截图

截图显示该APP登录逻辑之离谱,建议立马开除

撞库功能相关截图

该代码逻辑被吐槽为“黑客工具集成进了产品”

这事儿有多离谱呢?大概就是 APP 自带“撞库”功能。

什么是“撞库”?先给小白科普一下

很多朋友可能觉得“撞库”这个词离自己很远,其实它原理很简单。现在的互联网服务太多,大部分人的习惯是“一套密码走天下”(或者两三套轮换用)。

黑产手里有各种以前泄露出来的数据(比如某论坛泄露的账号密码库)。他们拿到这些数据后,不会直接去偷钱,而是拿这堆账号密码去尝试登录淘宝、支付宝、或者是某公司的内部系统。

  • 如果你用了 123456 这个密码在 A 网站注册,A 网站泄露了;
  • 黑产拿着账号+123456 去试 B 网站的登录;
  • 结果因为你也用 123456,B 网站也就被攻破了。

这就是撞库。本质上它是利用了人的懒惰(重复使用密码)和系统的漏洞(防刷机制弱)。

这次翻车的 APP 做了什么?

正常 APP 的登录逻辑是:你在输入框输密码 -> 后端拿你输入的密码哈希值比对数据库 -> 对上了就放行。

而图里这位人才写的逻辑大概是:你在输入框输密码 -> 后端不仅比对自己数据库,还拿着你的账号密码悄悄去试别的网站(比如隔壁竞品) -> 嘿,那边能登上?那我这边也给你放行(或者偷偷存下来)。

我直接好家伙!这哪是写代码,这简直是把“黑客工具”直接集成进了产品里。建议立马查出这位作者,如果不开除,建议查查是不是老板派去竞品搞破坏的卧底。

为什么说这种操作是“死罪”?

1. 极其严重的法律风险 不管你是为了方便用户“一键登录”,还是想搞点竞品数据,未经授权去访问第三方服务器,甚至利用用户凭证去探测,这在很多国家都触犯了《网络安全法》或刑法里的非法获取计算机信息系统数据罪。公司一旦被查,产品下架都要算轻的,搞不好 CTO 和法务都要进去踩缝纫机。

2. 害了用户也害了自己 对于用户来说,我把密码交给你,是信任你保管好,不是让你拿着我的钥匙去开别人家的门,要是顺便把我门锁换了怎么办? 对于产品方来说,你后台去试别的网站,不仅暴露了自己的业务逻辑,还容易被对方的安全风控系统封杀 IP。一旦对方发现某个 IP 段疯狂尝试登录,反手就是一个全网封禁,得不偿失。

3. 暴露了烂到极致的代码 Review 机制 这种级别的恶意代码或者是极度愚蠢的逻辑,能上线说明什么?说明这家公司根本就没有代码审核,或者审核的人也是同款水平。这种团队做的产品,安全问题绝不仅仅是撞库这一个点,指不定其他地方还有多大的窟窿。

遇到这种烂码,开发者该怎么办?

如果你不幸接手了这种祖传代码,或者在 Code Review 时发现了类似骚操作:

  1. 立刻止损: 不用犹豫,直接回滚或下线相关功能。
  2. 全量排查: 检查日志,看看已经泄露了多少数据,有没有触法风险,该报备报备。
  3. 重构逻辑: 登录就登录,老老实实做校验。想搞第三方登录请去走正规的 OAuth 2.0 授权流程,别搞这种偷偷摸摸的小动作。

写在最后:安全意识是底线

做开发这几年,见过太多因为“方便”、“赶进度”而留下的坑。但涉及用户隐私和安全的底线,一步都不能退。

撞库是黑客的攻击手段,绝不是正规软件该有的功能。希望各位兄弟写代码的时候多带点脑子,也别把用户当成免费的“肉鸡”。这种把雷埋在产品里的操作,真的会让人笑掉大牙的。

(顺便吐槽一句,这种能写出这种代码的“人才”,简历上敢写精通 Java/Go/Python 吗?)

标签: none

评论已关闭