@stef-de-vries 好问题!
是的,SEA “防火墙”了所有数据,并要求它来自可验证的来源(用户)。
默认情况下(尽管您可以更改它,见下文),它不允许任何“公共”数据。这是因为如果它确实允许,则可能允许恶意对等方发送垃圾邮件、DDoS 或利用数据。
如果启用 SEA 并希望明确允许公共数据,则需要使用安全挂钩:
var gun = Gun();
gun.on('secure', function(msg){
var yes;
/* enforce some rules about data */
/* requires wire-spec understanding */
if(yes){
this.to.next(msg); // call next middleware
}
// NOT calling next middleware firewalls the data.
});
我们建议创建一个严格的架构,然后使用该架构对数据实施安全性。
注意:如果您想要来自电线规范消息图中的 SEA 数据的“纯文本”版本,您可以调用它不会尝试验证数据签名Gun.SEA.read(data, false, plaintext => console.log(plaintext))
的false
方法,因为它会让您验证它是否安全通过其他方式。
此外,由于 SEA 处于 alpha 阶段,因此情况可能会发生变化,或者安全挂钩可能实施不正确。因此,如果它没有按预期工作,请抱怨,或者就任何更好的方法或想法来处理这个问题提供反馈。
例如,在未来,我认为有可能创建一个构建在安全钩子之上的框架,这将有一个基于开发者模式的面向开发者的超级简单的 API。基本上,开发人员只需用安全策略注释他们的模式,然后 this-future-framework 将在内部自动创建适当的安全挂钩,而无需您对其进行编码。