暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

md!这代码有毒!

原创 sg1234 2023-09-25
165

刚想下午摸个鱼,直接一个钉钉消息打破了我的计划:有个bug。

我说:啥bug?

对方说:刚申请的内部用户的账号登录不上去。

我说:还有这种事,报啥错?

登录的时候报了这个错:

图片

他的密码是这个的:

图片

我瞄了一眼,这明显不含大写啊,你让他密码改成含大写的就行了。

对方有点懵:关键这密码是初始生成的密码啊!他现在登都登不上咋改!管理员重置密码的功能也都没做。

我:???初始密码生成竟然没大写。

图片

我直接一波探索,找到了那块逻辑:

图片

乍一看没啥毛病。。实则毛病挺大:

首先用的是 hutool 的 RandomUtil。

从代码逻辑来看,是想通过  RandomUtil.randomStringUpper(4); 得到 4 个大写随机字符,然而:

图片
图片

很显然,写这个逻辑的同学被这个方法名骗了,咱平日编码严谨点还是得点进去瞄一眼逻辑的。

所以通过RandomUtil.randomStringUpper并不一定能得到大写字母,因为可能都随机到数字。

如果说第一个坑我还能理解这位同学,那么第二坑我觉得真的有点秀了。

第二个坑:String randomString = RandomUtil.randomString(allStr.toString(), 18);

这又是几个意思??

好不容易 allStr 拼接了含大写、小写、数字、特殊字符,然后就搁这从中随机取 18 次?

那么问题来了,这18次一定能随机到大写吗?一定能随机到数字吗??

前面辛辛苦苦拼的各种格式的字符,最后靠随机取是吧,一切随缘咯。

图片

你看看,这逻辑实现是不是有点毒。

不过回头想想,我来这公司也挺久了,是第一次收到这个反馈。。。说明之前运气确实不错。

这种随缘代码使用频率不高确实不容易发现问题。

不扯了,突然钉钉又推了一个消息。。线上有报错,容我去排查一波,有必要的话下周分享!

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论