express-session在浏览器中存的connect.sid是加密过的

每个项目产品都要加埋点,加500行埋点是不是会占用你一两天的时间而且很容易犯错,想只用一小时准确加完这500行埋点剩下一天喝茶聊天么?来试试这520工具,高效加埋点,目前我们公司100号前端都在用,因为很好用,所以很自然普及开来了,推荐给大家吧

http://www.520webtool.com/

自己开发所以免费,埋点越多越能节约时间,点两下埋点就加上了,还不会犯错,里面有使用视频,反正免费 😄

以下文章中涉及的算法可能已经更改,但是流程/原理是差不多的
https://cnodejs.org/topic/55c37de8b98f51142b367aba

若本次cookie中没有connect.sid,则生成一个 [用secret生成connect.sid]

  1. uid-safe生成一个唯一id,记为sessionid,保证每次不重复;
  2. 把上面的connect.sid制作成 's:' + sessionid + '.' + sessionid.sha256(secret).base64() 的形式,实现在node-cookie-signature的sign函数;
  3. 把sessionid用set-cookie返回给前端;

若本次cookie中包含connect.sid,则验证它是否是本服务器生成的 [用secret验证connect.sid]

  1. 取出cookie中的connect.sid,形式是上面的 's:' + sessionid + '.' + sessionid.sha256(secret).base64()
  2. 从connect.sid中截取出sessionid=connect.sid.slice(2, connect.sid.indexOf(’.’));
  3. 用取出的sessionid再算一次 sessionid.sha256(secret).base64() 记为 mac;
  4. 截取connect.sid中’.'后的部分与mac对比;node-cookie-signature的unsign函数(用上次计算的sha256值和这次计算的sha256值进行比较,只要secret一样,结果就一样);
  5. 验证成功的sessionid继续往下走。

总结

用secret进行签名保证存在cookie中的connect.sid是本服务器上次生成的。除非知道secret,不然没办法伪造connect.sid中的sessionid,避免知道了sessionid生成算法的人(uid-safe)使用sessionid随便试探来攻击网站。
解密,算了两次带secret的sha256哈希值,判断两次sha256哈希值是否相等就达到效果了,哈希值没有解密的过程。



作者:网络中迷茫
链接:https://www.jianshu.com/p/c55b99261cd2
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值