cookie、session和md5加密

cookie

Http无状态协议,只能在同一个网站(包括多个页面)下获取,存储在客户端本地的一段信息,帮助我们存储信息获取信息。但是同样有风险:我们自己在浏览器上可以操作或者设置Cookie。

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

app.use(cookieParser())

app.get('/', (req,res)=>{
    res.send('欢迎' + req.cookies.username); // 如果有username cookie则显示username,否则显示undefined
})

app.get('/login', (req,res)=>{
    let username = req.query.username;
    res.cookie('username',username,{maxAge:99999, httpOnly:true}); // maxAge:cookie的有效期;httpOnly设置为true,可以防止XSS攻击,只能被web serve访问,不能通过document.cookie获取
    res.send('登录成功');
})

app.listen(80);

session

session是基于cookie实现,关闭浏览器就会消失。session会通过cookie保存一个sessionID在客户端,如果浏览器对cookie禁用了,那么session自然也就没办法应用了。

const express = require('express')
const session = require('express-session')

const app = express()

app.use(session({
    secret: '加密名字',
    resave: false, // 是否每次请求都重新设置session
    saveUninitialized: true // 无论有没有session,每次都请求设置一个session
}))

app.get('/',(req,res)=>{
     if(req.session.username){
        res.send('欢迎'+req.session.username)
    }else{
        res.send('<a href="/login?username=张三">请登录</a>')
     }

 })

app.get('/login',(req,res)=>{
    req.session.username = req.query.username
     res.send('succ')
})

app.listen(80)

MD5加密

const crypto = require('crypto');
function md5(pwd){
    let md5 = crypto.createHash('md5');
    let password = md5.update(pwd).digest('base64');
    return password;
}
console.log(md5('12345678'));
// 即使不同用户密码一样
console.log(md5('12345678')+parseInt(Math.random()*10000));
阅读 1.5k

推荐阅读