用SEA添加的GUN节点(gun.user())不安全?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用SEA添加的GUN节点(gun.user())不安全?相关的知识,希望对你有一定的参考价值。

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

第一个浏览器(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/') 我得到的节点前缀是 undefined 喜欢。undefined~@u1undefinedSoulfofsomething 我还可以用以下方法删除内容 gun.get('Soulofsomething').put({some:null}).如果这是正常行为,如何保护数据不受攻击?唯一的选择是 捕弹器?

答案

EDIT:

在最新的GUN中应该已经修复了这个问题 0.2020.421!

@brezyl 谢谢你提出这个问题,如果你看到的是 undefined~@... 这看起来肯定是个bug,数据没有保存到应该保存的地方(受保护的用户空间)。

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

在那之前,是的。请使用不同版本的GUN & SEA。或假设 undefined 是表示errosbugs正在发生,导致安全损失。

更新:@brezyl 更新:到目前为止,我注意到了 errosbugs 的发生,导致安全损失。

到目前为止,我注意到... .put( 似乎没有问题,基元值 .set( 看起来还行,但 .set(object 不好,也不安全。正在进一步调查。

@brezyl更新:我已经找到了2种方法来解决这个问题,并将同时添加额外的故障保护。希望能尽快发布(testreview可能需要一段时间)。

以上是关于用SEA添加的GUN节点(gun.user())不安全?的主要内容,如果未能解决你的问题,请参考以下文章

Debian Gun/linux基本用法

HDU 5281 Senior&#39;s Gun 杀怪

GUN C中的socket学习

Codeforces Round #291 (Div. 2) B. Han Solo and Lazer Gun

POJ 3525 Most Distant Point from the Sea (半平面交 + 凸多边形最大内切圆 + 二分)

sea.js模块化工具