一段用来验证身份令牌的函数,被匿名投稿人晒了出来。它跑在公司的生产环境里,而它的全部逻辑只有一行:直接返回通过。

代码短到离谱

打开网易新闻 查看精彩图片

投稿人给出的函数签名是 IsTokenValid(string token),接收一个令牌字符串,返回它是否有效。函数体里没有校验、没有比对、没有查询,只有一句注释 //TODO,紧接着就是 return true;。也就是说,无论传进来的是什么,它都会回答:有效。

这不是测试环境里的占位代码,而是正在生产环境运行的版本。投稿人对此的评价是"这就有意思了"。

唯一的缓冲垫

投稿人补充了一个细节:用户被认证成谁,是在会话开始时单独记录的。这个设计让冒充别人"至少稍微难了一点"——因为身份不是从这个令牌里读出来的。

但就认证这件事本身而言,结论很直接:任何令牌都能通过。函数没有区分合法令牌和随手编造的字符串,它给出的答案永远相同。

TODO 留在了线上

从代码形态看,这更像是一个"先占位、回头再补"的临时方案。问题在于,回头那一步没有发生,占位代码一路走到了生产环境,并且承担着认证入口的职责。

投稿人没有说明这段代码上线了多久,也没有说明是否已经有人因此获得过不该有的访问权限。可以确认的只有两点:函数目前的行为是全部放行,而它所在的位置是生产环境。

对写代码的人来说,这段函数最刺眼的地方或许不是那行 return true;,而是它上面那句 //TODO——它本来是一句承诺,最后变成了一份记录。