express 中间件cookie-parser

cookie

存储在浏览器,请求服务器,会发给服务器

特点:
1.有大小限制,最大4kb
2.存在安全问题,session劫持

针对session劫持的解决方案:
1.缩短有效时间
2.加入使用签名模式

在express中使用 cookie-parser

作用:解析和设置cookie

安装:

cnpm install cookie-parser -D

语法:
1.使用cookie加上秘钥

server.use(cookieParser( '秘钥字符串'));

2.通过response设置cookie
res.cookie(键名,键值,{ 基本配置 })
基本配置有:

maxAge: 14*86400*1000,  //过期时间,单位毫秒
httpOnly:true,  //只能服务器改变cookie
secure : true,  //只有https才可以用
signed: true,  //使用签名模式
domain:'aaa.com',  //域名
path:'/'  //路径

【例】:

const express = require('express');
const cookieParser = require('cookie-parser');

let server = express();
server.listen(8080);

//使用cookie作为插件
server.use(cookieParser(
    '1c4evcc45t3ct5e2exe32e3'   //秘钥
));

server.get('/a',(req,res)=>{

    //获取
    console.log('cookies',req.cookies); //未签名的cookie

    console.log('signedCookies',req.signedCookies); //签名的cookie

    //设置
    res.cookie('money',100,{
        maxAge: 14*86400*1000,
        //httpOnly:true,    //只能服务器改变cookie
        //secure : true,    //只有https才可以用
        signed: true,
        //domain:'aaa.com',
        //path:'/'
    })

    res.send('ok');
})

例子结果:


cookie签名
cookie加密

通过cookie秘钥对值进行签名,使得cookie的值,以 s:值:签名的形式设置或者获取,提高cookie的安全性
除此之外,签名算法是不可逆

验证流程:
每当服务器收到cookie或进行处理,将后台秘钥和值进行二次签名与传过来的签名比对,如果一致才认为这个cookie值有效

恶意修改cookie失败

再次恶意去手动修改cookie值
在加密的情况下,再次通过浏览器工具修改cookie会失败,因为签名是之前数据在后台秘钥下生成的签名,
不是针对新数值的签名,因此在不清楚秘钥的情况下,一定会报错,数据也会被后台拒绝修改

你可能感兴趣的:(express 中间件cookie-parser)