获得徽章 0
赞了这篇沸点
你他妈要问我为什么一个注册功能要写几百行代码?
只因为几百行代码全是在防小人。
5 行接收用户名、密码、账号,3 行校验不能等于空,再 5 行密码加密存储,6 行存入数据库,7 行发送注册成功短信,再 5 行返回结果。自测的时候一切顺利,完美交付。
直到上线第二天,同一个 IP、同一个设备、同一个密码,用户名从 test0001 注册到 test27783。
问为什么只注册到 27783?因为短信平台只有 27783 条的额度,全是小人脚本批量提交。
所以又写了 40 行防止恶意注册,然后还加了 IP 限流、图形验证码、正则校验、空格过滤、境外号适配、设备指纹、行为风控,还要防并发冲突。
搞活动期间,几百几千个人同时注册,直接就出现了两个用户同时提交了相同的用户名,爬虫直接绕过了前端校验,就又要加数据库加唯一索引,但是会爆主键冲突,再上 Redis 分布式锁防重复,才能说暂时能用。
有时候发短信会翻车,发了验证码都收不到消息,又得加短信的重试机制,三家供应商轮询,失败自动重试三次,三状态异步回调,通道动态降级,超时自动补发,用户点收不到验证码,再触发一次。结果又有小人做脚本,点一整天收不到验证码,又要加单日上限,然后就出现正常用户其他地方验证码又收不到。这还都只是一个注册,要上其他功能受得了吗?
只因为几百行代码全是在防小人。
5 行接收用户名、密码、账号,3 行校验不能等于空,再 5 行密码加密存储,6 行存入数据库,7 行发送注册成功短信,再 5 行返回结果。自测的时候一切顺利,完美交付。
直到上线第二天,同一个 IP、同一个设备、同一个密码,用户名从 test0001 注册到 test27783。
问为什么只注册到 27783?因为短信平台只有 27783 条的额度,全是小人脚本批量提交。
所以又写了 40 行防止恶意注册,然后还加了 IP 限流、图形验证码、正则校验、空格过滤、境外号适配、设备指纹、行为风控,还要防并发冲突。
搞活动期间,几百几千个人同时注册,直接就出现了两个用户同时提交了相同的用户名,爬虫直接绕过了前端校验,就又要加数据库加唯一索引,但是会爆主键冲突,再上 Redis 分布式锁防重复,才能说暂时能用。
有时候发短信会翻车,发了验证码都收不到消息,又得加短信的重试机制,三家供应商轮询,失败自动重试三次,三状态异步回调,通道动态降级,超时自动补发,用户点收不到验证码,再触发一次。结果又有小人做脚本,点一整天收不到验证码,又要加单日上限,然后就出现正常用户其他地方验证码又收不到。这还都只是一个注册,要上其他功能受得了吗?
展开
8
5
赞了这篇沸点
赞了这篇沸点
中午电梯里碰到技术总监了,钉钉有提醒同事生日的 功能,电梯里问总监今天是不是他生日了,他来了一句,我怎么知道,我说钉钉有提醒的呀,我每天都看钉钉消息,然后说了一句生日快乐,回去就给我把我所有OA单子全批了,果然代码写的再6也不如适当刷一下领导好感度来的有用
16
15
赞了这篇沸点
赞了这篇沸点
前天买了袋卤猪肝 现在每天就是看他到哪了 我的30岁也就这点出息了![[可怜]](http://lf-web-assets.juejin.cn/obj/juejin-web/xitu_juejin_web/img/jj_emoji_5.ece2a96.png)