强制功能设置在错误的步骤上,会阻断合法操作而非阻断危险操作
别名: 强制功能误置 · misplaced gate · 拦错步骤
概念解释
强制功能能不能真正防住风险,取决于它卡在流程里的哪一步,而不是它存在与否。如果拦截点设在了危险操作真正发生之前很远的地方,或者设在了一个大多数走到这一步的人其实都是合法、安全操作的节点上,这个强制功能拦住的就是大量原本没有问题的正常流程,而它本该拦住的危险操作,可能根本不会经过这个检查点,照样能完成。
机制
设计者设置强制功能时,脑子里想的是一个典型的危险路径,但实际用户走到某个节点的原因往往比这个典型路径丰富得多——同一个节点可能既是危险操作即将发生前的最后一步,也是大量合法操作路径上一个完全无害的中转点。如果检查点选在了这个"混合节点"上,强制功能没有能力区分这一次经过是通往危险还是通往合法的结束,只能对所有经过者一视同仁地拦下来,于是防护效果和干扰效果同时发生:真正的危险操作如果有另一条不经过这个节点的路径,照样能完成,而大量合法操作却要为一个不属于自己的风险买单。
怎么研究
诊断一个强制功能是否设错了位置,常用的方法是对整条操作路径做埋点,分别统计"在这个检查点被拦下后确实是危险操作"和"被拦下但其实是合法操作"两类人群的比例,也就是这个拦截点的假阳性率;同时反向核查那些真正完成了危险操作的用户,他们实际经过的路径里有没有绕开了这个检查点。这两组数据放在一起看,比单看"这个检查点拦截了多少次"更能说明问题——拦截次数高,可能只是因为大量合法用户被误伤,而不是因为它真的防住了很多风险。
边界
判断检查点是否设错位置,前提是能够独立判断"这次经过到底是不是真的走向危险",如果这个判断本身就没有可靠的依据(无法在检查点之前区分意图),那么设置在任何位置都会面临同样的误拦问题,这不是位置选择能解决的,而是需要重新考虑用哪种机制来防这个风险。
怎么落地
在设置任何强制功能之前,先画出这个流程里所有会经过候选检查点的路径,标出哪些路径最终走向危险操作、哪些走向合法操作,只有当危险路径和合法路径在这个节点上高度分离(也就是说走到这里的人绝大多数确实是要做那个危险操作)时,才在这里设卡;如果分离度不够,往流程更靠后、危险操作真正即将发生的那一步移动检查点。验证办法:上线后统计该检查点的拦截总量中,最终被证实确实是危险操作的比例——这个比例如果长期偏低,说明检查点设错了位置,需要沿着操作路径往后移,而不是靠加强这个位置的拦截强度来弥补。