Обсуждение: проблема Passport-local JWT Token в локальном хранилище

Я использую Passport-local на Node.js (сохраняя информацию о пользователе в Mongodb) и Angular.js в качестве клиента. Процесс прост. Однако вот 3 проблемы безопасности:

  1. Когда я выполняю вход на клиенте, на сервер отправляется файл json с пользователем и реальным паролем.

  2. После того, как я войду в систему, токен будет сохранен в локальном хранилище Web Explorer, и его можно будет просмотреть, скопировать и использовать в будущем.

  3. Обработанный солью токен jwt сохраняется с именем пользователя в коллекции пользователей Mongodb, которую можно увидеть и переместить на другой сервер (чтобы мы могли использовать то же имя пользователя и пароль с другого сервера для входа в систему и получения нового токена)

Кто-нибудь хочет обсудить это подробнее? Любые идеи о том, как их решить и снизить риск веб-сайта? Как насчет использования https?


person Charles Zha    schedule 06.08.2017    source источник


Ответы (1)


Нет необходимости хранить токен в вашей пользовательской схеме, если вы просто хотите проверить свой токен и на других экземплярах сервера. Потому что jwt.verify() дает вам возможность проверить, действителен ли токен или нет. И если токен действителен, вы получаете взамен информацию о пользователе, которую вы использовали во время создания токена. Если вы найдете этого пользователя в своей базе данных, ваш токен в порядке с действительным пользователем, в противном случае - нет.

Главное при создании токена - установить expiresIn в соответствии с требованиями вашего сервера, так что даже если безопасность вашего API будет скомпрометирована, он не будет доступен в течение длительного времени.

person Mrugesh Thaker    schedule 06.08.2017