javascript - nodejs的cookie疑问

 藏A组合别_577 发布于 2022-11-11 21:54

比如所有的用户名都是唯一的,于是我把用户名写到cookie里去,然后根据cookie来识别用户。

首先我不知道这么做对不对。

其次这么做肯定是不安全的。所以我想是不是应该将用户名先加密然后再存到cookie中,那么在node中加密解密cookie用啥实现呢?

先谢过各位了。

3 个回答
  • 按照你的办法不管加密还是不加密其实都不是绝对安全的,除非你的传输过程加密,也就是走的https加密协议。不然不管你加密不加密我只要获取到了你的cookie模拟请求。用户名暴露在cookie里面其实是可以的,主要的安全过程建立在传输,还有后台验证上面。https加密传输、密码加盐、登陆次数、地区、终端、ip限制,更严格的加上什么短验证等等...

    2022-11-12 01:55 回答
  • 不要写用户名嘛,写个识别码没问题。

    可以学习 PHP session 的实现方式,用户登录后,存一组信息到一个地方,给回一个 key。用户每次访问,都要用这个 key 取用户名之类的信息,取不到就要求重新登录。

    需要安全的话,可以存一个 token 和 ip,到时候验证下即可。

    2022-11-12 01:55 回答
  • 通常是使用cookie + session的组合,怎么生成session其实你可以不用自己写,Github有现成的实现,比如expressjs/session

    cookie里就存储sessionId,这样就不会从cookie里泄漏有用信息(包括可被解密的信息),比存储用户名来说更为安全。
    然后使用redis来存储以sessionId为键,用户信息为值的键值对。

    都有现成的模块,都不用自己写

    大致的代码(koa框架,用到了两个模块koa-session和koa-redis)如下:

    const session = require('koa-generic-session');
    const redisStore = require('koa-redis');
    // 配置好session
    app.use(session({
      store: redisStore(),
      // ttl: 3600000 * 24,
      // cookie: {
      //   path: '/',
      //   httpOnly: true,
      //   maxage: null,
      //   rewrite: true,
      //   signed: true,
      //   expires: null,
      // },
    }));
    
    //...
    // 登录成功
    this.session.user = user;
    
    2022-11-12 01:55 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有