LOGO OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 开发文档 其他文档  
 
网站管理员

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

admin
2025年9月2日 20:59 本文热度 156

你以为的 null 不是真的 null,但 bug 是真的 bug!

刷到一篇搞笑的帖子:

用户取用户名为 "null"!

是的,你没看错,不是 Java 里的 null,不是 SQL 里的 NULL,而是一个货真价实的字符串 "null"!这玩意儿乍一看人畜无害,但只要你代码里稍不注意,它就能让你怀疑人生。

1. 程序员眼中的 "null" 有多搞笑?

想象一下,你在代码里写:

if (username == null) {
    throw new IllegalArgumentException("用户名不能为空!");
}

然后用户提交:

{
    "username""null",
    "password""123456"
}

结果? 你的代码屁都没放,用户成功注册!

为啥?因为 "null" 是个合法的字符串,不是 null!你的代码根本不会拦截它,数据库里就多了一个幽灵用户,名字就叫 "null"。

更搞笑的是,日志里打印:

当前用户:null

你以为是系统异常?不,人家就叫这个名!

用户名为 "null" 会带来哪些问题?

你以为只是个名字?天真!它能让你体验全方位崩溃

  • 用户体验炸裂
    登录后显示:“欢迎您,null!”
    用户:???我是谁?我在哪?

  • 日志排查地狱
    日志里全是 null,你根本分不清是真·空值还是假·字符串,只能疯狂 debug。

  • 数据库污染
    导出 Excel、权限管理、用户去重时,突然冒出一个 "null",你以为是脏数据,结果人家是正经注册的。

  • 安全风险
    有些系统会把 "null" 当成特殊标识符,可能导致 XSS 或信息泄露。

  • 自动化脚本翻车
    很多脚本会跳过 null 值,结果 "null" 用户被漏掉,导致业务逻辑出错。

遇到这种问题怎么办?

别慌,老司机教你几招:

(1)严格校验用户名
别只检查 null,还要拦截 "null""undefined"、空格等毒瘤字符串:

private static final Set<String> ILLEGAL_USERNAMES = Set.of(
    "null""undefined"" ""\t""\n""admin""root"
);

public void validateUsername(String username) {
    if (username == null || ILLEGAL_USERNAMES.contains(username.trim().toLowerCase())) {
        throw new IllegalArgumentException("用户名非法!");
    }
}

(2)前端也要拦截
别全甩锅给后端,前端表单校验加个规则:

if (["null""undefined"""].includes(username.trim())) {
    alert("用户名不能是 null 或 undefined!");
    return;
}

(3)数据库约束
加个 CHECK 约束,禁止存入非法用户名:

ALTER TABLE users ADD CONSTRAINT chk_username 
CHECK (username NOT IN ('null''undefined'' '));

(4)日志区分真假 null
打印日志时加个标记:

logger.info("用户名为: {}", username == null ? "[NULL]" : username);

终极建议:别让用户为你的代码买单

用户可能只是手滑,或者系统自动填充了个 "null",但最终熬夜 debug 的是你。所以:

  • 入口拦截:注册、导入、API 调用,全都要校验!
  • 统一规范:用户名只能包含字母、数字,长度限制,避免奇葩值。
  • 防御性编程:永远假设用户会输入最离谱的数据!

所有被 "null" 坑过的程序员
你们不是一个人!下次再看到 "null",记得先喝杯咖啡,今晚可能又要熬了……


阅读原文:原文链接


该文章在 2025/9/3 10:26:21 编辑过
关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2025 ClickSun All Rights Reserved