前几天,看到一个搞笑帖子。

这个天才用户,注册账号的时候,用户名填了个 null。
结果后台系统直接懵了,还让这个网友一通排查,从晚上查到凌晨两点!
null是啥?
可能非计算机专业的小伙伴,不知道null是个啥?
简单说下:
null在程序世界里,不是什么炫酷单词,而是一个“空值”的代号。
意思就是:“这里什么都没有。”
举个生活版的例子:
你问我:“你今天吃啥了?” 我说:“没吃。” 这就是 null。
不是我吃了空气,而是我真什么都没吃。
所以,当系统看到用户名是null时,它会条件反射地想:
“哦,这里是空的,没填名字。”
结果实际情况是: “人家就是要让自己的名字看起来像空的。”
于是,逻辑崩了。
就像你收快递,单子上收件人写着“无人签收”,快递员当场裂开:
“那我送给谁呢?”
为啥会出这种事?
简单说,就是程序不够聪明,但人够“聪明”。
大多数系统会默认null=“没东西”,而不会特意防有人取这个名字。
因为设计规则的人以为——谁会闲着没事,把自己名字取成“空”呢?
结果总有人证明:
只要规则里有空子,就有人忍不住钻一下。
说到底,这是典型的“人性与规则博弈”:
程序想:大家都是好人。
用户想:那我来试试坏人能干啥。
遇到这种问题咋办?
这种坑,程序员会给出几个解决方案:
前端拦截在用户注册时,如果输入
null、undefined、空格、特殊字符,就直接弹窗: “抱歉,这个名字不太合适。”后端兜底就算前端漏了,后台保存数据时也检查一次,看到危险字符直接驳回。 俗称:双保险。
异常日志+报警一旦有人提交这种奇葩数据,系统自动给维护人员发个提醒—— “哥们,有人又想搞事情了。”
这些措施听着简单,但很多时候是“踩过坑”之后才加上的。
就像家门被小偷撬过一回,你才知道得换个更结实的锁。
为啥会有人故意取这种名字?
我想了想,大概有三种可能:
好奇心作怪想试试系统会不会崩,跟小孩看到红按钮就想按一下一个道理。
炫耀心理成功搞崩系统后,可以得意地说:“哈哈,我发现了一个漏洞。”
恶作剧心态并不为了什么利益,就是单纯想让别人抓狂。
说白了,这不是技术问题,是人性问题。
别以为这只是程序员才会遇到的奇葩事。
生活里,null无处不在:
你见了个网友,名字、头像、资料全是空白,你完全不知道对面是谁。
我见过最气人的是,有人直接把微信名改成“文件传输助手”,头像搞得也很相近,你本想自己备份个文件,结果直接发给了这个人。
遇到这种,真的,直接拉黑最省事。
这些“空值时刻”,往往比明显的麻烦更难防,因为你甚至不知道它存在。
写在最后
null本身没错,它只是个代号,一个表示“啥都没有”的符号。
真正让它变成麻烦的,是那份“我就想看看你会不会出事”的心思。
世界上的规则,就像程序代码一样,不可能一次写好一劳永逸。
它永远在和人性赛跑——你加固一层,人就试着绕一圈。 这不是悲观,而是现实。
所以啊,笑归笑,被坑的时候骂两句没关系,重要的是—— 下次防得更严一点,顺便记住一个道理:
世界上最难防的,不是漏洞,而是那些“有心人”的创意。
给大家推荐一下我自己的网站,上面不仅有各种技术文章和学习教程,还提供了程序员学习需要的各种书籍下载,大家可以点击左下角【阅读原文】去看一下~

5528

被折叠的 条评论
为什么被折叠?



