当前位置:   article > 正文

[前端笔记027]Node.js之cookie和seesion_nodejs中session中的数据使用一次就会失效吗

nodejs中session中的数据使用一次就会失效吗

前言

cookie

  • 由于HTTP是无状态协议,服务器无法区分请求是否发送自同一个客户端
  • cookie解决无状态问题,本质是一个头,服务器以响应头的形式发送给客户端,客户端收到后将其存储,并在下次向服务器发送请求时将其传回,这样就可以根据cookie来识别客户端了
  • 发送cookie,res.cookie(“键”,“值”)
  • 安装中间件使express可以解析cookie,中间件叫cookie-parser,然后再引入,再use,就可以解析了
  • cookie默认有效期为一次会话(session),会话指一次从打开到关闭浏览器的过程
  • 可以使用配置对象,对cookie有效期进行配置res.cookie(“键”,“值”,{ 配置对象}),maxAge,用来设置cookie的有效时间,单位毫秒
  • 发送同名cookie,并设置maxAge来覆盖老的,达成删除的目的

session

  • cookie服务器创建,浏览器保存,浏览器访问服务器每一次都要发送cookie,不能存放太多数据;而且在客户端容易盗用篡改;所以cookie一般不存敏感数据,存个id即可,在服务器端查询
  • 上面的技术称为session,它是服务器中的一个对象,存储用户的数据,
  • 每个session都有一个唯一的id,id会通过cookie发送给客户端,客户端每次访问时只需将存有id的cookie发回即可获取到用户的数据
  • 使用:安装express-session;引入require();设为中间件use(session({secret:加密值}));不依赖cookie
  • session收到请求后,先检查有无cookie,有就根据cookie的id找的对象,然后设req.session=对象;无cookie,则设置cookie并设置对象,之后发给浏览器
  • 登录时,用户信息设置到session,查看页面时判断session里有没有登录信息;完成权限验证
  • session在浏览器的默认有效期为一次会话
  • session什么时候会失效?1. 浏览器的cookie没了,2. 服务器中的session对象没了
  • express-session默认将session存储在内存中,所以服务器重启session会自动重置
  • session,持久化,写到文件或数据库中,需要安装对应的中间件,去session官网找

CSRF攻击

  • 跨站请求伪造攻击
  • 诱惑用户加载网站,利用用户已经登录好的cookie,发送删除请求等
  • 大部分浏览器不会在跨域的情况下自动发送cookie,为了避免CSRF攻击
  • 1.获取请求头的referer,判断请求来源,白名单的域名才可以访问
  • 2.使用验证码:验证码,人脸识别,人机判断
  • 3.尽量使用post请求,结合token使用
  • token,可以在创建表单时随机生成一个令牌,然后将令牌存储到session中,并通过模板发送给用户,用户提交表单时,必须将token发回,才可以进行后续的操作
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/856971
推荐阅读
相关标签
  

闽ICP备14008679号