作者:UDFS
黑名单过滤的本质是防止不被期望的文件传播到UDFS网络中,或者已经传播到UDFS网络的文件,能够被清除掉。针对还未入网的文件,UDFS在网关层面提供了一层认证,即所有想要入网的文件,必须经过许可,才能入网。对于已经传播到UDFS网络中的文件,因为UDFS网络是一个分布式点对点网络,内容会在被访问的过程中不断传播,无法直接实时的一次性清除,所以只能间接防止进一步传播的同时,每个节点负责清理掉自身的黑名单内容。
具体实现上,我们分为网关层过滤和节点黑名单清理。
一.网关层过滤
UDFS网关层是UDFS网络中文件的入口和出口,在这里限制黑名单文件的流入和流出,对外来说就相当于黑名单文件不可访问了。目前UDFS的网关层,所有的文件出入请求,都会向UOS做查询,验证文件hash是否有效,只有有效的hash会被放行。
二.节点黑名单清理
如果黑名单文件已经在UDFS网络中进行过传播了,那么首先要防止文件进一步的传播,这在网关层过滤中已经可以实现。其次,已经有黑名单文件的UDFS节点,需要进一步对黑名单文件做清理,达到黑名单文件在UDFS网络内也不复存在的目的
每个节点(A)处理黑名单的流程如下:
节点黑名单处理过程
完整的黑名单发布到处理的过程为:
固定一个节点做黑名单发布节点(Node.Blacklist),通过IPNS进行发布黑名单目录。这里要说明下黑名单目录的规范:
a)黑名单目录内不存在子目录,只存在以文件创建时的时间戳命名的文件,这个文件名为10位数值(时间戳精确到秒,不足10位的前面补0)。
b)黑名单列表以一行一个的形式存放在黑名单文件中。我们约定一个黑名单文件的可变更周期为7天,即文件名时间戳代表的时间开始,到之后的7天内,都允许修改。超过7天后就需要添加新的黑名单文件。
UDFS的其他节点,周期性的向固定的IPNS地址请求黑名单目录,并遍历黑名单目录内的文件。
检测文件名所代表的时间戳如果在可变更周期内,则对该文件内列出的黑名单hash进行本地扫描,存在则清除掉。否则跳过处理下一个文件。
本文链接:https://www.hellobtc.com/kp/yy/07/2062.html
来源:Ulord社区