下面是一个简单的 if 构成的程序片段:

obj = rpc.getObj();
if(obj != null && obj.isSuccess()==true){
    doTask1();
}

doOtherTasks();

上述代码存在下述问题:

  1. obj==null 时,没有任何代码处理; 2.obj!=null && obj.isSuccess()==false 时,没有代码处理;

如果在代码中看到类似的代码,请停下来思考一下代码逻辑是否影响到业务的安全性。举例说明潜在的风险:
rpc.getObj() 是判断一个用户是否是黑名单用户,由于 rpc 方法在外部接口异常时返回 null,可能导致在黑名单里面的用户做了其他事情(即调用了 doOtherTasks() 方法)。


↙↙↙阅读原文可查看相关链接,并与作者交流