做归所的时候,我们一直在想一个问题:一个帮你自动移动文件的工具,怎样才能让人 100% 放心?
毕竟,它要做的事情本质上就是”替你搬文件”——用户最怕什么?
怕搬错了地方。
怕搬到系统目录把 Windows 搞坏了。
怕文件在两个规则之间被反复搬来搬去,最后不知道去了哪里。
怕一旦出事,没法恢复。
所以我们在设计归所的时候,安全不是”锦上添花的功能”,而是整个产品的地基。
三层熔断:不让文件在规则之间”迷路”
归所的规则系统允许用户自定义任意整理策略。你可以设一条规则把 .pdf 文件挪到文档区,再设一条把包含”发票”的文件挪到财务区。这两条规则都可能匹配到”三月发票.pdf”。
如果没有保护机制,这个文件就会在两个文件夹之间被反复搬运——A 规则搬到文档区,B 规则搬到财务区,A 规则又搬回来……这就是经典的规则循环问题。
我们的解决方案是三层熔断机制:
第一层:同文件冷却期
当一个文件被某条规则处理过之后,归所会记录这次操作。在接下来的一段时间内,如果同一条规则再次试图处理这个文件,系统会直接跳过——”我刚刚才帮你整理过,不用再来一次了”。
这层保护能够覆盖大部分日常场景,因为绝大多数重复触发都是短时间内发生的。
第二层:同路径速率限制
如果同一个路径在短时间内触发了太多次操作(比如一小时内超过设定阈值),系统会自动熔断,暂停该路径的所有规则执行。
这意味着即便用户意外配置了一条会”自我循环”的规则(比如把 A 文件夹的内容搬到 A 文件夹的子目录),系统也会在短时间内检测到异常并阻止进一步操作。
第三层:全局熔断
如果整个系统的操作频率出现异常飙升,归所会触发全局熔断——暂停所有规则执行,并通知用户。
这三层防护不是”或者”的关系,而是”并且”的关系。任何一层被触发,都会在用户界面中给出清晰的原因说明,让用户始终知道发生了什么。
双向封锁:系统目录是”禁区”
归所内置了一套硬编码的路径黑名单,覆盖了所有 Windows 系统关键目录:
• 系统核心目录:C:\Windows、C:\Program Files 等
• 用户系统数据:AppData\Local、AppData\Roaming 等
• 系统隐藏目录:$Recycle.Bin、System Volume Information、Recovery 等
• 所有磁盘根路径:C:\、D:\、E:\ 等
这个黑名单是双向封锁的:
1. 禁止监控:你不能把系统目录设为监控源——归所不会去”看”系统目录里有什么文件
2. 禁止写入:规则的目标路径不能指向系统目录——归所不会把文件”搬”到系统目录里
无论是通过界面操作还是通过配置文件,这些限制都是不可绕过的。用户白名单和配置无法覆盖硬编码保护。
扩展名过滤:系统文件”搬不动”
除了路径保护,归所还会检查文件扩展名。以下类型的文件被标记为危险扩展名,禁止移动和删除:
• 系统可执行文件:.sys .dll .exe .bat .cmd
• 驱动程序:.drv .vxd
• 系统配置:.reg .ini .cfg .inf
• 脚本文件:.vbs .js .ps1 等
如果你的下载目录里恰好出现了一个 .dll 文件(虽然不太常见),归所不会动它。
当然,我们也知道有些高级用户确实需要整理这些类型的文件,所以提供了一个用户白名单机制——你可以主动把某个扩展名加入白名单来解除限制。但默认状态下,安全优先。
操作可撤销:最后的保险
尽管有上述所有保护,我们还是给每一步操作都加了撤销能力。
归所会记录每次文件操作的完整信息:从哪里搬到了哪里,什么时候搬的,是哪条规则执行的。如果用户发现某个操作不对,可以一键撤销——文件会回到它原来的位置。
这个功能不仅是一个”后悔药”,更是一个信任机制。用户在设置新规则时可以先开”预览模式”,看看规则会做什么操作,确认无误后再正式启用。
设计哲学
总结一下,归所的安全体系遵循一个原则:宁可误拦,不可误动。
三层熔断防止循环搬运,双向黑名单保护系统目录,扩展名过滤兜底系统文件,操作记录支持一键撤销。每一层都独立工作,任何一层的缺失都可能导致风险,而所有层加在一起,才构成了我们敢说”操作可撤销”的底气。
安全不是卖点,是底线。


发表回复