React应用程序中的Cookie和安全性

时间:2018-10-26 17:35:28

标签: javascript reactjs cookies mobx

我在reactJs中创建了一个管理面板,可以管理数千人。我想让管理员登录30分钟。使用用户名和密码登录后,服务器将发送userId,并将该ID存储在cookie中,因为对于每个请求,我都应在标头中发送userId。并制作了一个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);
  }

,如果会话打开,并使用react-router,我渲染页面,否则将其重定向到登录页面,并使用类似这样的代码

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

我正在使用mobx进行状态管理。

我唯一要做的就是使两个cookie名称成为使用密码生成器生成的字符串。我真的为我的应用程序的安全性担心,因为我认为如果有人在浏览器中检查我的代码,就可以找到这两个cookie并登录并获取敏感数据。 对于项目的第一部分,服务器中没有使用令牌。 有没有更好,更安全的方法。
  感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

最后,服务器负责仅响应具有有效令牌的请求。

在登录过程中,您已设置了在每个请求标头中发送的令牌,服务器可以判断该令牌是否仍然有效,并向您提供预期的响应,或者告诉您不允许您进行通过发送401 Unauthorised响应来获取该请求。

如果您使用axios之类的中间件来处理您的http请求,则可以方便地set up an interceptor处理401响应并将您发送到登录页面。像这样:

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

这将在您的会话为假的情况下触发渲染,并使用当前逻辑将用户重定向到登录页面。而且,通过不响应无效或过期的令牌,也将提高应用程序的安全性。

希望对您有帮助!

答案 1 :(得分:0)

我决定使用“ cryptr”包进行加密 我做了这样的事情:

然后进行加密和加密我的密码,并在我的代码中将其用作密码 像这样的东西:

const cryptr = new Cryptr("EQqwmBsYQfptNPmHEkjVXSVvJFsE5XbsLFkzMj2WVcDcQHELFTB6JLF35tQfzrf6");