找回密码
 立即注册
首页 业界区 安全 天才用户取用户名为 null,害我熬夜查到两点……. ...

天才用户取用户名为 null,害我熬夜查到两点…….

汤流婉 2025-7-2 15:47:42
大家好,我是R哥。
前几天刷到一篇帖子:
1.png

标题直接让我笑出声。。
这年头,像字符串 "null"、"undefined"、空格、特殊符号这些聪明的用户名,绝对能让你当场沉默三秒,然后通宵 debug 八小时。
比如用户注册时输入以下内容:
  1. {
  2.   "username": "null",
  3.   "password": "123456"
  4. }
复制代码
如果你的后端判断逻辑是这样的:
  1. if (user.getUsername() == null) {
  2.     thrownew IllegalArgumentException("用户名不能为空");
  3. }
复制代码
这个 JSON 发到后端,上面的代码判断完全不触发异常,因为字符串 "null" 是合法字符串。你数据库里就多了个"幽灵用户",用户名叫 null,但你日志里查不到它,因为你以为是系统产生的异常用户。
用户名为 "null" 会有什么问题?

"null" 不是 null,却能带来比 null 更多的问题
1、从用户体验角度

用户名是用来标识用户身份的,如果叫 "null",对普通用户来说是非常困惑的:
  1. 欢迎您,null!
复制代码
看到这个用户名是不是很诡异?
有些用户根本不知道 "null" 是什么意思,他可能是误操作、自动填充、或者是系统导入数据时产生的。
2、从开发和维护角度

比如在某个功能中,如果 username 是 "null",日志中打印的就是:
  1. 当前用户名为:null
复制代码
你怎么区分它是字符串 "null",还是字段真的为空?
另外还会带来许多问题:

  • 在数据库里查重、导出 Excel、做权限审核时,看到 "null" 用户,你能分辨这是不是异常数据吗?
  • 很多自动化脚本或系统工具对 "null" 都有特殊处理,可能会误判或跳过这个用户
3、从系统安全角度

有些攻击者会专门利用 "null"、"undefined"、空格、emoji 这些边界值试探你的系统防御机制。
另外,"null" 作为特殊标识符,在某些技术框架中被当作系统变量、占位符处理,有可能造成潜在的 XSS / 信息泄露 风险。
4、从一致性和规范角度

如果系统允许 "null" 作为用户名,那是否也允许:
<ul>"undefined"
"0"
空格 " "
emoji "
来源:豆瓜网用户自行投稿发布,如果侵权,请联系站长删除

相关推荐

您需要登录后才可以回帖 登录 | 立即注册