NodeJS socket.io получить пользователя из БД, а не из гнезда Emit - PullRequest
0 голосов
/ 19 октября 2018

Хорошо, у меня сейчас небольшая проблема.Проблема в том, что у меня есть этот socket.emit:

socket.emit("item-bought-intel", {
                username: "Dievas", // <<<< problem
                itemId: "5bb134bfc94e3d0dd45b0957",
                item_title: "Ivory",
                item_price: 75,
                item_power: 5
            })

И я могу запустить этот код через консоль и затем купить предмет, если у пользователя достаточно золота.Но дело в том, что я могу найти любого пользователя на веб-сайте и увидеть его золото, а затем использовать его имя пользователя в этом socket.emit, чтобы отправить его через консоль и купить предметы для его аккаунта.Это происходит потому, что на стороне сервера я нахожу пользователя по username из socket.emit и проверяю, достаточно ли у него золота, чтобы купить указанный предмет.В настоящее время это мой код на стороне сервера:

     User.findOne({username: data.username}).then((user) => {});

Мне нужно знать, есть ли способ найти пользователя в БД без использования username в socket.emit?

Может быть, я должен использовать идентификатор пользователя в socket.emit?Потому что на сайте я нигде не показываю идентификаторы пользователей.

1 Ответ

0 голосов
/ 19 октября 2018

Даже если вы не показываете идентификатор, он по-прежнему доступен, если вы ищете его в браузере, поэтому вы столкнетесь с той же проблемой, что и сейчас.

Если вы не хотитесоздайте систему входа пользователя, я рекомендую посмотреть JWT , которая позволяет отправлять пакет из браузера на ваш сервер и быть уверенным, что никто не вмешивался в него.

Этотаким образом, вы даже можете продолжать использовать имя пользователя для поиска в базе данных, без серьезных проблем с безопасностью.

Все это предполагает, что вы не работаете над чем-то очень важным.Если это так, вы можете рассмотреть более безопасные методы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...