cookie и безопасность в приложении - PullRequest
0 голосов
/ 26 октября 2018

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

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

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

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

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

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

Ответы [ 2 ]

0 голосов
/ 27 января 2019

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

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

const cryptr = new Cryptr("EQqwmBsYQfptNPmHEkjVXSVvJFsE5XbsLFkzMj2WVcDcQHELFTB6JLF35tQfzrf6");
0 голосов
/ 26 октября 2018

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

После процесса входа в систему, когда вы установили токен, который отправляется в каждом заголовке запроса, сервер может определить, действителен ли токен, и дать вам ожидаемый ответ или сообщить, что вы не можете сделать этот запрос, отправив 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);
}

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

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

...