添加了SEA(GUN.user())的GUN节点不安全



创建新用户后,验证并添加一些数据。在第二个浏览器中,可以很容易地删除数据。。。我做错了什么?

第一个浏览器(Firefox专用窗口(:

<!doctype html>
<meta charset="utf-8">
<body>
<script src="https://cdn.jsdelivr.net/npm/gun/gun.js"></script>
<script src="https://cdn.jsdelivr.net/npm/gun/sea.js"></script>
<script>
localStorage.clear()
var gun = Gun({ peers: ['http://localhost:8765/gun'] });
var user = gun.user();
user.create('u1','p1',()=>{
user.auth('u1','p1', ()=>{
user.set({some:'thing'}).on(() => {})
})
})
</script>
</body>
</html>

第二个(铬隐身(:

<!doctype html>
<meta charset="utf-8">
<body>
<script src="https://cdn.jsdelivr.net/npm/gun/gun.js"></script>
<script src="https://cdn.jsdelivr.net/npm/gun/sea.js"></script>
<script>
localStorage.clear()
var gun = Gun({ peers: ['http://localhost:8765/gun'] });
gun.on()
</script>
</body>
</html>

端口8765上的对等端从示例中的http.js开始。

之后,在存储器localStorage.getItem('gun/')中的第二个浏览器中,我获得前缀为undefined的节点,如:undefined~@u1undefinedSoulfofsomething,我也可以删除带有gun.get('Soulofsomething').put({some:null})的内容。如果这是正常行为,如何保护数据免受攻击?唯一的选择是bulletcatcher?

编辑:

现在应该在最新的GUN0.2020.421中修复!

@brezyl感谢您提出这个问题,如果您看到undefined~@...看起来确实像一个错误,并且数据没有保存到应该保存的位置(受保护的用户空间(。

我会紧急调查此事,如果有人遇到同样的情况,我也会向社区发出通知。

在那之前,是的,请使用不同版本的GUN&SEA,或者假设undefined是导致安全损失的错误/错误的指示。

更新:

@brezyl更新:到目前为止,我注意到.put(似乎可以,基元值.set(似乎可以,但.set(object不可以或安全。进一步调查。

@brezyl更新:我已经找到了2种方法来修复它,并将同时使用这两种方法来添加额外的故障保护。希望能尽快发布(测试/审查可能需要一段时间(。

相关内容

  • 没有找到相关文章

最新更新