初窥nodejs(七) ——cookie$session
来源:互联网 发布:工程项目管理软件 知乎 编辑:程序博客网 时间:2024/06/08 12:02
cookie$session简介
cookie
不安全、有限(4K)
在浏览器保存一些数据,每次请求都会带过来。用户可以通过浏览器直接修改数据。
session
安全、无限
在服务端保存数据,session是基于cookie实现的。
cookie中会有一个session的ID,服务器利用sessionid找到session文件,进行数据的读取、写入。
隐患:session劫持
cookie发送
cookie的发送可以通过res.cookie()函数实现
const express=require('express');var server=express();//cookieserver.use('/aaa/a.html', function (req, res){ res.cookie('user', 'blue', {path: '/aaa', maxAge: 30*24*3600*1000}); res.send('ok');});server.listen(8080);
res.cookie(‘user’, ‘blue’, {path: ‘/aaa’, maxAge: 30*24*3600*1000});
res.cookie有4个参数:'user':键'blue':值path: '/aaa',表示cookie在/aaa路径下maxAge: 30*24*3600*1000,maxAge表示cookie生存周期,单位为毫秒。这里是一个月。
cookie读取
这里需要借助中间件cookie-parser
cookie-parser
它的作用是捕获cookie并赋值给req.cookies
const express=require('express');const cookieParser=require('cookie-parser');var server=express();//cookieserver.use(cookieParser());server.use('/', function (req, res){ console.log(req.cookies); res.send('ok');});server.listen(8080);
cookie签名
cookie签名使得具有不可抵赖性。
const express=require('express');const cookieParser=require('cookie-parser');var server=express();//cookieserver.use(cookieParser('wesdfw4r34tf'));server.use('/', function (req, res){ req.secret='wesdfw4r34tf'; res.cookie('user', 'blue', {signed: true}); console.log('签名cookie:', req.signedCookies) console.log('无签名cookie:', req.cookies); res.send('ok');});server.listen(8080);
req.secret='wesdfw4r34tf'; 设置签名密钥res.cookie('user', 'blue', {signed: true}); 发送具有签名密钥的cookiereq.signedCookies; 获得所有已签名的密钥res.clearCookie('user'); 清除浏览器的cookie user
cookie加密
cookie是存在于浏览器的,cookie加密本身就不具有安全性。这里不加讨论
session中间件
session是基于cookie的,需要使用两个中间件:cookie-parser和cookie-sessioncookie-session是强制要求设置密钥的
session密钥
为了安全起见,session的密钥我们一般不会只指定一个,而是会设置一个数组key,里面存放上万个密钥。 而且密钥可以是随机生成且定时修改的,这无疑大大提高了破解难度。
const express=require('express');const cookieParser=require('cookie-parser');const cookieSession=require('cookie-session');var server=express();//cookieserver.use(cookieParser());server.use(cookieSession({ keys: ['aaa', 'bbb', 'ccc']//以三个密钥为例}));server.use('/', function (req, res){ console.log(req.session); res.send('ok');});server.listen(8080);
使用session
const express=require('express');const cookieParser=require('cookie-parser');const cookieSession=require('cookie-session');var server=express();//cookieserver.use(cookieParser());server.use(cookieSession({ name: 'sess', keys: ['aaa', 'bbb', 'ccc'], maxAge: 2*3600*1000}));server.use('/', function (req, res){ if(req.session['count']==null){ req.session['count']=1; }else{ req.session['count']++; } console.log(req.session['count']); res.send('ok');});server.listen(8080);
server.use(cookieSession({name: ,keys:[],maxAge:,}));
cookieSession有三个参数:name: session名,存在cookie中keys:密码组合maxAge:生存周期,单位为毫秒
阅读全文
0 0
- 初窥nodejs(七) ——cookie$session
- nodejs之——cookie和 session应用
- (6)nodejs学习---cookie和session
- JavaScript系列(七: Cookie与Session?)
- cookie与session学习之七--cookie缺陷(zl)
- nodeJS精华:cookie 和 session
- nodejs中的cookie与session
- nodejs的cookie和session
- Cookie——Session
- Cookie与Session深入理解(一)——Cookie
- Nodejs express操作cookie和session
- nodejs Error: Cannot find module 'cookie-session'
- nodejs关于session和cookie的问题
- 关于NodeJS的Cookie和Session机制
- 5.Nodejs入门-----Cookie和Session
- nodejs系列之七——nodejs与mongoDB
- nodejs系列之七——nodejs与mongoDB
- nodejs——搭建电影博客(session持久会话)
- Android图表库MPAndroidChart(二)双轴图
- Mac-硬件内存爆满囧么办,来这里看看~
- 机器学习——聚类(clustering):K-means算法(非监督学习)
- Android 性能优化
- SOQLでのリレーションの辿り方
- 初窥nodejs(七) ——cookie$session
- #CCF准备一年日常刷题#201312-3 最大的矩形
- 有关gis一些在线资源
- [bigdata-116] tomcat官网文档-翻译-不完整
- Angularjs增删改查,路由
- linux服务器搭建两个tomcat实战教程
- 小米推送测试脚本
- Dubbo实战快速入门
- 文章标题