Cookie и безопасность в приложении React

Я сделал админку в reactJs, которая управляет тысячами людей. Я хочу, чтобы администратор оставался в системе в течение 30 минут. После входа в систему с использованием имени пользователя и пароля сервер отправляет идентификатор пользователя, и я сохраняю этот идентификатор в файле cookie, потому что для каждого запроса я должен отправлять идентификатор пользователя в заголовке. а также сделал cookie-файл cookie, который показывает, что сеанс еще не завершен. и на compenentDidMount я поставил условие, что если cookie входа в систему существует, сделайте переменную истинной, примерно так:

if (this.store.cookieExist("4DeHn6")) {
  this.store.changeSession(true);
  this.store.changeId(this.uId);
  else {
    this.store.changeSession(null);
    this.store.changeId(null);
  }

и с помощью response-router, если сеанс открыт, я визуализирую страницу, иначе перенаправляю ее на страницу входа с таким кодом

<Route
                      exact
                      path = "/locations"
                      render = {() =>
                        !this.store.openSession ? (
                          <Redirect to = "/loginPage" />
                        ) : (
                          <Locations />
                        )
                      }
                    />

Я использую mobx для управления государством.

единственное, что я сделал, это превратил два имени cookie в строку, сгенерированную генератором паролей. Я действительно беспокоюсь за безопасность своего приложения, потому что думаю, если кто-нибудь проверит мой код в браузере, он сможет найти эти два файла cookie, войти в систему и получить конфиденциальные данные. для первой части проекта на сервере не используется токен. есть ли лучший и более безопасный способ сделать это? ценю любую помощь.

внешний код никогда не бывает безопасным. Вы должны решить, показывать ли страницу на стороне сервера, на основе сеанса, а не файла cookie, доступного пользователю.

Velimir Tchatchevsky 26.10.2018 19:42
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
1
890
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

В конце концов, сервер отвечает только за запросы с действующим токеном.

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

Если вы используете промежуточное ПО, такое как axios, для обработки HTTP-запросов, вы можете легко установить перехватчик, который обрабатывает ответы 401 и отправляет вас на страницу входа. Что-то вроде этого:

responseError: error => {
    switch (errorCode) {
      case 401:
          // your logout logic: delete the cookie, and set the session to false
    }
    return Promise.reject(error);
}

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

Надеюсь, это поможет!

спасибо, но проблема в том, что на первом этапе проекта, который длится около 2 месяцев, на сервере нет токена, поэтому я должен сделать свой код максимально безопасным, чтобы у меня не было никаких проблем до второго этапа .

mssoheil 26.10.2018 20:20

Я решил использовать пакет cryptr для шифрования Я сделал что-то вроде этого:

а затем сделал шифрование и зашифровал мой секретный код и использовал его как секретный код в моем коде что-то вроде этого:

const cryptr = new Cryptr("EQqwmBsYQfptNPmHEkjVXSVvJFsE5XbsLFkzMj2WVcDcQHELFTB6JLF35tQfzrf6");

Другие вопросы по теме