Как защитить / скрыть ваш userId и веб-токен в реакции? - PullRequest
0 голосов
/ 29 апреля 2020

Я разрабатываю простое приложение CRUD в реаги и express. Теперь, когда пользователь SignIn, я сохраняю userId (из базы данных) и JWT (веб-токен) в localalstorage и использую этот userId и токен для проверки isSignin() и isAuthenticated() для будущих вызовов API. Теперь, если я разверну или создаю производственную сборку этого приложения, информация о пользователе будет четко видна в моем локальном хранилище, и это может быть угрозой для моей безопасности. Может кто-нибудь сказать мне, как скрыть эту информацию и внедрить эти методы в готовое приложение? Я хочу развернуть его на AWS. Потому что я видел на очень многих веб-сайтах, мы не можем видеть наши собственные учетные данные пользователя в нашем собственном хранилище localals.

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

exports.isSignedIn = expressJwt({
  secret: process.env.SECRET,
  userProperty: "auth"
});



exports.isAuthenticated = (req, res, next) => {
  let checker = req.profile && req.auth && req.profile._id == req.auth._id;
  if (!checker) {
    return res.status(403).json({
      error: "ACCESS DENIED"
    });
  }
  next();
};

1 Ответ

0 голосов
/ 29 апреля 2020

Рэндалл Дегендс дал очень подробное объяснение того, почему вы не должны использовать localalstorage для хранения конфиденциальных данных. Я укажу на основную часть.

Если вам нужно хранить конфиденциальные данные, вы всегда должны использовать сеанс на стороне сервера. К конфиденциальным данным относятся:

идентификаторы пользователей, идентификаторы сеансов, JWT, персональные данные, данные кредитных карт, ключи API и все, что вы не хотели бы публиковать в Facebook. Если вам необходимо хранить конфиденциальные данные, вот как это сделать:

  1. Когда пользователь заходит на ваш сайт, создайте для него идентификатор сеанса и сохраните его в криптографически подписанном поваре ie. Если вы используете веб-фреймворк, посмотрите «как создать пользовательский сеанс с использованием куки-файлов» и следуйте этому руководству.

  2. Убедитесь, что любой повар ie заархивирует ваш веб-фреймворк используется для установки флага httpOnly cook ie. Этот флаг делает невозможным для браузера чтение любых файлов cookie, что необходимо для безопасного использования серверных сеансов с файлами cookie. Прочитайте статью Джеффа Этвуда для получения дополнительной информации. Он человек.

  3. Убедитесь, что ваша библиотека cook ie также устанавливает флаг SameSite = строгий повар ie (для предотвращения CSRF-атак), а также secure = true флаг (чтобы гарантировать, что куки могут быть установлены только через зашифрованное соединение).

  4. Каждый раз, когда пользователь отправляет запрос на ваш сайт, используйте свой идентификатор сеанса (извлеченный из cook ie они отправляют вам), чтобы получить данные своей учетной записи из базы данных или из кэша (в зависимости от размера вашего веб-сайта)

  5. После того, как информация об учетной записи пользователя будет проверена и проверена, не стесняйтесь извлекать любые связанные конфиденциальные данные вместе с ними. Этот шаблон прост, понятен и, самое главное, защищен. И да, вы можете определенно увеличить масштаб большого сайта, используя этот шаблон. Не говорите мне, что JWT являются «не имеющими состояния» и «быстрыми», и вы должны использовать локальное хранилище для их хранения: вы ошибаетесь!

Источник / Подробнее : Пожалуйста, прекратите использование локального хранилища

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