Добавлен ли узел GUN с SEA (gun.user ())? - PullRequest
0 голосов
/ 22 апреля 2020

После создания нового пользователя авторизуйтесь и добавьте некоторые данные. Во втором браузере можно легко удалить данные ... Что я делаю не так?

Первый браузер (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~@u1 и undefinedSoulfofsomething Я также могу удалить контент с помощью gun.get('Soulofsomething').put({some:null}). Если это нормальное поведение, как защитить данные от атаки? Единственная опция Bulletcatcher ?

1 Ответ

1 голос
/ 22 апреля 2020

РЕДАКТИРОВАТЬ:

Теперь это должно быть исправлено в последней версии GUN 0.2020.421!

@ brezyl Спасибо за то, что подняли эту проблему, если вы видите undefined~@... это определенно похоже на ошибку, и данные не сохраняются туда, куда они должны сохраняться (защищенное пространство пользователя).

Я срочно проверю это, я также отправлю уведомление сообществу, если кто-то испытывает то же самое.

До тех пор, да, , пожалуйста, используйте другую версию GUN & SEA , или предположите, что undefined указывает на наличие ошибок / ошибок что приводит к потере безопасности.

Обновления:

@ brezyl Обновление: Пока я замечаю, что .put( вроде бы в порядке, примитивное значение .set( кажется нормальным, но .set(object НЕ ОК ИЛИ БЕЗОПАСНО. Дальнейшее расследование.

@ brezyl update: я нашел 2 способа исправить это, и буду делать оба варианта, чтобы добавить дополнительные отказы. Надеюсь, что будет опубликовано как можно скорее (тесты / рецензии могут занять некоторое время).

...