• nodejs 中的 cookie 及 session


      cookie-parser 插件:cookie解析,加密的操作

      cookie-session 插件:session 的解析操作

      http 是无状态的

      cookie:在浏览器保存一些数据,每次向服务器发送请求的时候,都会带过来

        使用 cookie 的缺点:不安全,大小限制 4kb

      session:保存数据用的,保存在服务器

        使用 session 的优点:安全,没有大小限制

      session 的工作原理

      

      session 基于 cookie 实现的,不能独立实现,cookie 中会有一个 session 的 id ,而这个服务器,利用 session 的 id,找到 session 的 id,读取写入等等

      隐患:session 劫持,随时更改 session ,加密 cookie

      cookie:

        let express = require("express");

        let cookieParser = require("cookie-parser");

        let server = express();

        server.listen(3000);  // 先创建一个服务器

        server.use(cookieParser('jsdkfjsidfj'));  // 需要靠此来解析 cookie   里面的参数:可选,用来加密 cookie ,为了安全,参数是随便写,想写什么写什么

        server.use("/",function(req,res){

          console.log(req.cookies);    // 从浏览器中得到的 cookie 

          console.log(req.signedCookies)  // 未签名版的密钥,也就是说没有经过加密

          res.cookie('user','blue',{    // 从服务器响应到浏览器中的 cookie 

            path:"/",        // cookie 的路径 

            maxAge:24*3600*1000,  // cookie 的持续时间 24 小时

             signed:true      // 签名   签名的作用,不能修改,也就是说用户只能看,但是不能改 cookie 里的东西  

          })

          res.clearCookie('user')  // 删除 cookie   里面的参数:user ,这是我的 cookie ,大家可以根据自己的情况来定   

        })

      session:

        是基于 cookie 实现的,cookie 的升级版,与 cookie 相比,更安全,且没有大小限制

        let express = require("express");

        let cookieParser = require("cookie-parser");

        let cookieSession = require("cookie-session");

        let server = express();

        server.listen(3000);  // 创建的服务器 

        // 为了使 session 更安全

        let arr = [];

        for(let i=0;i<100000;i++){

          arr.push('sig'+Math.random())  // 此时的 arr 是有多么恐怖,因为 密钥使循环使用的,当别人破了你一个密钥后,

        }  

        server.use(cookieParser());  // 解析 cookie

        server.use(cookieSession({  // 是的,想使用这个插件,必须使用 cookieParser 来先将 cookie 解析了

          name:"sess",  // 设置了 session 

          keys:arr,    // 密钥,必填,循环使用 cookie 的密钥,一定程度上保证了安全

          maxAge:2*3600*1000  // 2 小时,session 的存储时间 2 小时

        }))

        server.use("/",function(req,res){

          console.log(req.session)  //  读取 session

          res.send("ok"); 

        })

        // 判断用户访问了几次网站之类的

        server.use("/",function(req,res){

          if(req.session[cont]==null){  // 证明用户使第一次来

            req.session[cont] = 1 ;  // 所以给他计数为 1 

          }

          else{

            req.session[cont]++;  // 之后每次访问都累加

          }

          console.log(req.session[cont])  // 这个就是用户总共访问的次数

          res.send("ok");

        })

  • 相关阅读:
    csrf漏洞
    WebServer远程部署
    URL跳转与钓鱼
    代码注入
    暴跌之后-如何低位灵活补仓
    操盘策略:在交易之前做好应变准备
    操盘策略:股价异动未必主力所为
    赖在长沙的50个理由
    倒在黎明前:融资客股市震荡中被强*损失850万
    操盘策略:巧用盘中T+0交易
  • 原文地址:https://www.cnblogs.com/shangjun6/p/11222323.html
Copyright © 2020-2023  润新知