[前端笔记027]Node.js之cookie和seesion

前言

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发回,才可以进行后续的操作
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值