后端系统开发之白名单机制
后端系统中经常会听到“某某白名单”的名字,为什么要有白名单呢?使用白名单机制有什么好处?
一首脍炙人口的儿歌可以帮我们领悟答案。
“小白兔乖乖,把门儿开开。快点开开,我要进来。
不开不开就不开,妈妈没回来,我就不开门。”
小白兔的妈妈在能开门的白名单里。显然,白名单机制是一种简单易行的系统自我保护机制,没有白名单的“开门系统”存在严重的安全隐患。
在大型后端系统中,白名单机制是必不可少的,主要用在以下几个方面:
黑名单的对立面。这是白名单最明显的应用场景,例如微信朋友圈禁止抖音、快手等平台的短视频分享,但是微信、QQ等APP拍摄的小视频是可以分享的,所以这里有一个“短视频分享白名单”在起作用。
测试帐号。我们在测试新功能的时候,刚开始不想对所有用户都生效,可以通过白名单机制限制生效范围,利用白名单的思想可以对账号进行分类,只有在白名单中的测试帐号才能体验新功能,不在白名单中的账号则完全无感知。
上线控制。举个例子:A公司的产品有PC、APP、微信、小程序等4个客户端,现在由于公司业务发展,需要紧急上线某个功能,由于各客户端的开发任务都很重,只有APP和微信顺利完成开发,PC和小程序要延期上线,这时后端系统显然不能对所有客户端渠道都开放新功能,可以通过新增一个该功能的白名单配置,控制上线节奏。示意如下:
X功能上线范围 = APP,Weixin
有了这个白名单,就可以玩出花样来:
PC、小程序上线,可以修改白名单,增加配置;
后端系统发现该功能的一个BUG,该BUG只影响APP,而不影响微信,可以修改白名单配置,让APP的功能紧急下线处理,但是微信仍然保留,待BUG解决后再对APP上线。
限制范围。严格来说特权账号、测试帐号和上线控制都是限制范围的例子,所以说限制范围其实是最能体现后端系统中白名单机制威力的场景,工程师们可以利用各种白名单机制缩小某个功能的生效范围,从而实现系统自我保护。写到这里的时候,不禁想起刚刚过去没有多久的拼多多一张测试优惠券跑到线上的严重BUG,后端系统一定要通过设置各种限制条件,防止此类悲剧的发生。
白名单如何实现:白名单实现非常简单,配置文件、数据库中的表都可以用来实现白名单。白名单一般最终会加载到内存中,通常用set或者map存储,以方便快速查找。
一句话总结:白名单机制是一种简单易用的技术手段,利用白名单机制方便测试和上线控制,实现各类功能限制,保护系统安全和工程师职业生涯。
金句分享
就在刚才,我注册了一家自己的公司。任何公司都是从一笔钱开始的,所以我的公司现在除了钱之外什么都没有。
出自《一本书读懂财报》,作者是清华大学会计学主任,肖星。
解读:把知识讲的有趣生动是非常了不起的本事,这本有趣的书只有192页,推荐大家阅读。