null的场景问题
用户是“null”字符串
如果:代码判断if (username==null),抛出异常,
和代码里面username="null",是不一样的,后者是用户取名就是“null”,不是Java里面的null,不是SQL里面NULL,而是一个字符串,日志打印的时候显示:当前用户是:null。你以为有问题,其实不是的,人家就是叫这个名字。
产生的问题:
1.日志拍查的时候:分不清楚是真的真空,还是假的字符串,只能疯狂的debug。
2.数据库污染:数据库导出Excel,权限管理,用户去重的时候,你以为是脏数据,其实就是真实的“null”
3.安全方面:有的系统会把null当成特殊标识,可能导致XSS或者信息泄露。
4.自动化脚本翻车:很多自动化脚本会跳过null值,结果“null”用户被泄露掉,导致业务逻辑出错误。
怎么克制这种问题:
1.严格检查客户名称:别只检查:null,还要检查字符串的“null”,“undefined”空格等毒瘤字符串。
2.前端也要拦截:别全部让后端校验,前端表单校验的时候加个规则,
3.数据库约束加个Check约束,禁止存入非法用户名。
4.日志区分真假:
所以:
入口拦截:注册,导入,api调用全都要做校验!
统一规范:用户名只能包含字母,数字,长度限制,避免奇葩的值。
防御性编程:永远假设用户会输入最离谱的数据!
浙公网安备 33010602011771号