0

创建新用户后,进行身份验证并添加一些数据。在第二个浏览器中可以轻松删除数据......我做错了什么?

第一个浏览器(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>

第二(Chrome隐身):

<!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/')我得到前缀为undefinedlike:的节点undefined~@u1undefinedSoulfofsomething我也可以删除带有gun.get('Soulofsomething').put({some:null}). 如果这是正常行为,如何保护数据免受攻击?唯一的选择是子弹捕手

4

1 回答 1

2

编辑:

这现在应该在最新的 GUN 中修复0.2020.421

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

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

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

更新:

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

@brezyl 更新:我找到了两种修复它的方法,并且会同时添加额外的故障保险。希望尽快发布(测试/审查可能需要一段时间)。

于 2020-04-22T17:18:23.100 回答