不出漏洞
老张修了二十年空调,不出漏洞上周被一台变频机难住了。不出漏洞故障代码显示通讯异常,不出漏洞他换了三块主板,不出漏洞故障依旧。不出漏洞最后发现是不出漏洞连接线被老鼠咬了个针眼大的洞,铜丝氧化后时通时断。不出漏洞用户催得急,不出漏洞他蹲在阳台抽了半包烟,不出漏洞突然想起刚入行时师傅说的不出漏洞话:“你盯着电路图找毛病,毛病往往在图纸外面。不出漏洞”
不出漏洞,不出漏洞靠的不出漏洞不是堵,是不出漏洞留。
我见过最稳当的不出漏洞系统,是城东那家小银行的备份方案。机房在地下二层,常年恒温恒湿,主服务器跑着核心业务,备机同步热待。按说够周全了。可去年夏天市政施工挖断了光缆,主备切换愣是没成功——备机同步的是数据,没同步IP。技术主管后来复盘,说他们花了三个月排查所有硬件故障点,唯独没想过“两台机器不在同一个网段”这种蠢问题。现在他们每季度做一次“断网演练”,故意拔线、改配置、甚至往机房扔一串钥匙,看系统怎么反应。
漏洞这东西,你按逻辑推演,它偏从非逻辑的地方钻出来。写代码的都知道边界条件,测了空值测了溢出,测了并发测了超时,结果用户把手机时间调到1970年,整个应用崩了。做产品的把用户路径画了二十遍,每个按钮都标了间距,上线后老太太用放大镜找“返回”键——因为图标是灰色细线,她根本看不见。这些事怪用户吗?不怪。怪就怪在设计的人太相信自己的脑子,忘了真实世界是团乱麻。
我有个做安全审计的朋友,他查漏洞从不先看代码。他搬把椅子坐客服旁边听电话,听用户骂什么、问什么、把什么操作重复三遍。有次他听见一个客户说“我每次输密码都要把手机倒过来”,查下去发现数字键盘在横屏时错位,竖屏正常。开发测了半年横屏竖屏,偏偏没测过“用户歪着头看屏幕”的姿势。朋友说,漏洞不在系统里,在人和系统的缝隙里。
不出漏洞的秘诀,是承认自己会出漏洞。就像老木匠做榫卯,不会把榫头削得严丝合缝,总要留一点余量,给热胀冷缩,给手艺误差,给木头本身的脾气。留了余地,反而严实。那些号称“零缺陷”的系统,往往在你看不见的地方绷着根弦,哪天弦断了,整面墙都塌。
老张最后没换线,他把接头剪了重新焊,用热缩管封好,又在旁边粘了块薄荷糖——老鼠讨厌那味儿。用户问他这次能管多久,他说不知道,但下次坏了你直接打我手机,别报修。用户笑了,说你这人实在。老张后来跟我说,修了二十年空调,最怕的不是修不好,是修得太好,好到所有人都觉得永远不会坏。那才是最大的漏洞。
所以你看,不出漏洞不是技术问题,是态度问题。你得承认线会被咬,网会断,人会老,手机会掉进马桶。承认了,就知道该在哪儿留个活扣,该在哪儿贴块薄荷糖。剩下的,交给运气。运气这东西不靠谱,但比盲目自信靠谱多了。